HTTP()

HTTP() SRC는 TQL 스크립트 안에서 HTTP 요청을 전송하고 응답을 바로 확인하실 수 있도록 지원합니다.
외부 API를 연동하거나 데이터 파이프라인 일부에서 HTTP 엔드포인트를 시험할 때 유용합니다.

구문: HTTP(text) Since v8.0.53

  • text: HTTP 요청을 기술한 문자열입니다.

TQL 사용 예시

구문은 RFC 2616을 따르며, 요청 메서드·헤더·본문을 모두 지정할 수 있습니다.

예시

HTTP() 소스를 사용합니다.

HTTP({
    GET http://127.0.0.1:5654/db/query
        ?q=select * from example limit 3
        &format=csv
        &timeformat=default
        &tz=UTC
})
TEXT()
HTTP({
    POST http://127.0.0.1:5654/db/query
    Content-Type: application/json

    {
        "q": "select * from example limit 3",
        "format": "csv",
        "timeformat": "default"
    }
})
HTML(`<pre>{{ .Value 0 }}</pre>`)
HTTP({
    POST http://127.0.0.1:5654/db/query
    Content-Type: application/json

    {
        "q": "select * from example limit 3",
        "format": "csv",
        "timeformat": "default"
    }
})
HTML({
    {{- with .Value 0 -}}
    <pre>
        {{- .StatusLine }}{{"\n"}}
        {{- .Header }}{{"\n\n"}}
        {{- .Body -}}
    </pre>
    {{- end}}
})

요청을 작성한 뒤 TQL을 실행해 주십시오.
결과 창에는 헤더와 본문을 포함한 HTTP 응답이 출력됩니다.

응답 예시

HTTP/1.1 200 OK
Content-Length: 212
Content-Type: text/csv; charset=utf-8
Date: Mon, 02 Jun 2025 03:42:33 GMT

NAME,TIME,VALUE
work-11-0,2025-03-19 01:56:19.824,0.00
work-11-0,2025-03-19 01:56:19.824,1.00
work-11-0,2025-03-19 01:56:19.824,2.00

워크시트

마크다운 셀 안에서 http 코드 펜스를 사용해 요청을 작성할 수 있습니다.

예시

### HTTP Client Example

```http
POST http://127.0.0.1:5654/db/query
    Content-Type: application/json

{
    "q": "select * from example limit 3",
    "format": "box",
    "timeformat": "default"
}
```

마크다운

http 코드 펜스는 .md 파일에서도 동일하게 동작합니다.

## HTTP Example

Code fence with `http`.

```http
GET http://127.0.0.1:5654/db/query
    ?q=select * from example limit 2
    &format=ndjson
    &timeformat=default&tz=local
```

쿼리 문자열

요청 행에 쿼리 문자열을 바로 포함할 수 있습니다.

```http
GET https://example.com/comments?page=2&pageSize=10
```

쿼리 파라미터가 많다면 가독성을 위해 여러 줄로 나눌 수 있습니다.
요청 행 다음에 ? 또는 &로 시작하는 줄은 쿼리 파라미터로 해석됩니다.

```http
GET https://example.com/comments
    ?page=2
    &pageSize=10
```

요청 헤더

요청 행(및 쿼리 문자열) 다음의 내용부터 첫 번째 빈 줄까지는 요청 헤더로 인식됩니다.
헤더는 한 줄에 하나씩 field-name: field-value 형식으로 작성해 주십시오.

예시

User-Agent: http-client
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6,zh-CN;q=0.4
Content-Type: application/json

요청 본문

요청 본문을 포함하려면 헤더 뒤에 빈 줄을 추가한 뒤 본문을 작성합니다. 빈 줄 아래의 모든 내용이 본문으로 처리됩니다.

예시

```http
POST https://example.com/comments HTTP/1.1
Content-Type: application/xml
Authorization: token xxx

<request>
    <name>sample</name>
    <time>Wed, 21 Oct 2015 18:27:50 GMT</time>
</request>
```

외부 파일 사용

본문을 파일로 지정하려면 줄의 맨 앞에 <를 두고 파일 탐색기에서 보이는 경로를 입력합니다.
운영체제의 절대 경로를 사용할 때는 경로 앞에 @를 붙여 주십시오.

예를 들어:

  • < /doc.xml : TQL 루트 디렉터리에 있는 파일을 가리킵니다.
  • < @/home/data/doc.xml : 운영체제의 절대 경로 /home/data/doc.xml을 가리킵니다.
```http
POST https://example.com/comments HTTP/1.1
Content-Type: application/xml
Authorization: token xxx

< /data/demo.xml
```

멀티파트 폼 데이터

요청 본문이 multipart/form-data라면 텍스트와 파일 업로드를 함께 보낼 수 있습니다.

```http
POST https://api.example.com/user/upload
Content-Type: multipart/form-data; boundary=----Boundary7MA4YWxkTrZu0gW

------Boundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="text"

title
------Boundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="image"; filename="1.png"
Content-Type: image/png

< /data/1.png
------Boundary7MA4YWxkTrZu0gW--
```

x-www-form-urlencoded

application/x-www-form-urlencoded 본문은 여러 줄로 나누어 작성할 수 있습니다.
첫 번째 줄 이후에는 각 키-값 쌍을 &로 시작해 주십시오.

```http
POST https://api.example.com/login HTTP/1.1
Content-Type: application/x-www-form-urlencoded

name=foo
&password=bar
```

이처럼 유연한 HTTP 요청 구문을 활용하면 TQL 스크립트 안에서 다양한 HTTP 기능과 포맷을 손쉽게 테스트하고 자동화하실 수 있습니다.

최근 업데이트