

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# HTTP 요청
<a name="monetization-functions-types-http-request"></a>

## 사용해야 하는 경우
<a name="monetization-functions-types-http-request-when"></a>

함수가 외부 서비스를 호출해야 할 `HTTP_REQUEST` 때 사용합니다. 일반적인 사용 사례에는 해결 공급자로부터 자격 증명 데이터 가져오기, 데이터 관리 플랫폼에서 대상 세그먼트 검색, 로깅 엔드포인트로 세션 정보 전송이 포함됩니다.

## 구성 필드
<a name="monetization-functions-types-http-request-fields"></a>

`HTTP_REQUEST` 함수에는 다음 필드가 있습니다.
+ **런타임** - 표현식 언어입니다. 이를 로 설정합니다`JSONATA`.
+ **MethodType** - HTTP 메서드입니다. 지원되는 값은 `GET` 및 `POST`입니다.
+ **URL** - 요청을 보낼 URL입니다. 정적 URL 또는 URL을 동적으로 빌드하는 JSONata 표현식을 사용할 수 있습니다.
+ **헤더 **- 요청에 포함할 HTTP 헤더로, 헤더 이름 및 값 페어로 지정됩니다. 동적 헤더 값에 `{%...%}` 표현식 구문을 사용합니다. 정적 값은 문자열로 직접 지정할 수 있습니다.
+ **본문** - 전송할 요청 본문입니다. `POST` 요청에 사용됩니다. JSONata 표현식을 사용하여 동적으로 본문을 빌드할 수 있습니다.
+ **RequestTimeoutMilliseconds**(필수) - 응답을 기다리는 시간입니다.
+ **출력** - HTTP 호출이 완료된 후 생성할 값을 정의합니다. 각 항목은 `response` 객체를 참조할 수 있는 표현식에 출력 키(예: `player_params.envelope_id`)를 매핑합니다.

이러한 필드에 적용되는 크기 제한 및 제한은 섹션을 참조하세요[한도](monetization-functions-limits.md).

## 요청 처리 방법
<a name="monetization-functions-types-http-request-phases"></a>

MediaTailor는 다음 두 단계로 `HTTP_REQUEST` 함수를 처리합니다.

1. **요청 빌드 **- MediaTailor는 현재 세션 상태를 기준으로 `Url``Headers`, 및 `Body` 표현식을 평가합니다. 이러한 평가된 값은 아웃바운드 HTTP 요청을 형성합니다.

1. **응답 처리 **- HTTP 호출이 완료되면 MediaTailor는 출력 블록의 표현식을 평가합니다. 이러한 표현식은 원래 세션 상태와 호출에서 반환된 `response` 객체를 모두 참조할 수 있습니다.

## 응답 필드
<a name="monetization-functions-types-http-request-response"></a>

HTTP 호출이 완료되면 출력 표현식에서 다음 필드를 참조할 수 있습니다.


| Field | 유형 | 설명 | 
| --- | --- | --- | 
| response.body | 객체 또는 배열 | JSON으로 구문 분석된 응답 본문입니다. 본문이 20,000자를 초과하거나 유효한 JSON이 아닌 null 경우 로 설정합니다. | 
| response.statusCode | Integer | 외부 서비스에서 반환한 HTTP 상태 코드입니다. 네트워크 장애 null 시를 로 설정합니다. | 
| response.text | 문자열 | 원시 응답 본문은 문자열로, 20,000자로 잘립니다. 네트워크 장애 "Internal Error" 시를 로 설정합니다. | 

**중요**  
`response.body` 필드는 응답이 유효한 JSON인 경우에도 응답이 20,000자를 초과하는 `null` 경우 입니다.

**참고**  
응답 객체는 `HTTP_REQUEST` 함수의 출력 블록에서만 사용할 수 있습니다. URL, 헤더 또는 본문 필드의 응답 필드는 참조할 수 없습니다. 에서 `SEQUENTIAL_EXECUTOR`각 `HTTP_REQUEST` 함수는 자체 응답에만 액세스할 수 있습니다.

값이 이면 데이터를 사용할 수 없음을 `null` 의미합니다. 이는 HTTP 호출이 실패하거나(네트워크 오류 또는 제한 시간) 응답 본문이 20,000자를 초과하거나 유효한 JSON이 아닐 때 발생합니다.

## 네트워크 장애 동작
<a name="monetization-functions-types-http-request-failure"></a>

네트워크 오류 또는 제한 시간으로 인해 HTTP 호출이 실패`response.statusCode`하고 `response.body`가 로 설정`null`되고 `response.text`가 로 설정된 경우`"Internal Error"`. 출력 표현식은 여전히 실행되므로 응답 데이터를 사용하기 `response.statusCode` 전에 항상 확인하세요.

**작은 정보**  
조건식을 사용하여 실패를 정상적으로 처리합니다. `{%response.statusCode = 200 ? response.body.value : 'default'%}` 

## 예: 자격 증명 데이터 가져오기
<a name="monetization-functions-types-http-request-example"></a>

다음 함수는 세션 시작 시 자격 증명 확인 API를 호출하고 결과를 플레이어 파라미터에 저장합니다. 수명 `PRE_SESSION_INITIALIZATION` 주기 후크용으로 설계되었습니다.

```
{
    "FunctionId": "fetchIdentityEnvelope",
    "FunctionType": "HTTP_REQUEST",
    "HttpRequestConfiguration": {
        "Runtime": "JSONATA",
        "MethodType": "GET",
        "Url": "{%'https://identity.example.com/v1/resolve?ip=' & $encodeUrlComponent(session.client_ip)%}",
        "Headers": {
            "Authorization": "{%'Bearer my_api_token'%}",
            "Accept": "application/json"
        },
        "RequestTimeoutMilliseconds": 2000,
        "Output": {
            "player_params.identity_envelope": "{%response.statusCode = 200 ? response.body.envelope : ''%}"
        }
    }
}
```

유사한 예제에 대한 전체 연습은 단원을 참조하십시오[함수 예제](monetization-functions-examples.md).