Tyk Feature - Request Forwarding 하기

Jun Hwang

Tyk 게이트웨이가가 요청을 같은 API 정의와 리스닝 경로를 사용하는 여러 개의 다른 백엔드 엔드포인트로 포워딩하는 것이 가능한가요?

Batch 프로세싱 예제

비즈니스 시나리오에서 하나의 요청이 어떤 집계된 형태의 데이터를 보여 주어야 하는 경우가 종종 있습니다. 이런 경우에는 여러 개의 다른 백엔드 엔드포인트를 호출하여 요청의 결과를 집계하여 리턴하는데, Tyk에서는 가상 엔드포인트 (virtual endpoint) 기능과 batch processing을 사용하여 원하는 결과를 얻을 수 있습니다.

아래의 예제는 batch 프로세싱 API를 사용하여 구현하는 방법을 보여 줍니다:

function batchTest(request, session, config) {

// 응답 오브젝트 설정
var response = {
Body: "",
Headers: {
"test": "virtual-header-1",
"test-2": "virtual-header-2",
"content-type": "application/json"
},
Code: 200
}

// Batch 요청
var batch = {
"requests": [
{
"method": "GET",
"headers": {
"x-tyk-test": "1",
"x-tyk-version": "1.2",
"authorization": "1dbc83b9c431649d7698faa9797e2900f"
},
"body": "",
"relative_url": "http://httpbin.org/get"
},
{
"method": "GET",
"headers": {},
"body": "",
"relative_url": "http://httpbin.org/user-agent"
}
],
"suppress_parallel_execution": false
}

log("[Virtual Test] Making Upstream Batch Request")
var newBody = TykBatchRequest(JSON.stringify(batch))

// 요청은 응답으로서 바디에 JSON을 가지고 올 것을 알고 있으니, 파싱합니다 var asJS = JSON.parse(newBody)
for (var i in asJS) {
asJS[i].body = JSON.parse(asJS[i].body)
}

// 이제 Tyk가 응답객체에 스트링 객체를 임베드하여 보낼 차례입니다.
response.Body = JSON.stringify(asJS)

return TykJsResponse(response, session.meta_data)

}
log("Batch Test initialised")