Draft, Context
Function Node의 코드는 (draft, context) => {...} 형태의 함수로 작성합니다. 이 문서는 코드 안에서 사용하는 draft, context 두 파라미터의 구조와 제공되는 함수/객체를 설명합니다.
draft 객체 구조
draft는 response, json 두 개의 하위 속성을 가집니다.
- draft.response: Flow의 최종 HTTP 응답을 구성할 때 사용하는 속성입니다.
statusCode: 응답 상태 코드입니다. 기본값으로 200을 가지고 있으므로 매번 값을 부여할 필요는 없으며, 오류가 발생했을 때나 200 이외의 값으로 수동으로 대체해야 할 때만 부여하면 됩니다.body: 응답 본문입니다. 기본값으로 빈 오브젝트를 가지고 있으므로 새로운 오브젝트 유형의 값을 통째로 부여하는 것은 권장하지 않습니다. 그렇게 하면 기존에 쌓인 body 값을 의도치 않게 덮어써 유실될 수 있으므로, 필요한 속성만 개별적으로 채워주세요.headers: 응답 헤더입니다. 기본값으로Content-Type등의 값을 가지고 있으므로 꼭 필요한 경우에만 부여하면 됩니다.
- draft.json: Node 간에 자유롭게 전달할 데이터를 담는 속성입니다. 구조에 제약이 없으며, 이전 Node에서 저장한 값을 이후 Node에서 읽거나 가공할 수 있습니다.
module.exports = async (draft, context) => {
draft.json.ifObj = { id: 1 };
// 기본값(200)을 사용하는 경우 별도로 부여하지 않아도 됩니다.
draft.response.statusCode = 500;
// body 전체를 대체하지 않고 필요한 속성만 채워야 기존 값 유실을 방지할 수 있습니다.
draft.response.body.result = "ok";
};
context가 제공하는 함수/객체
context에는 log, fn, request 외에도 Function Node 안에서 바로 사용할 수 있도록 미리 만들어진 함수와 객체들이 많이 포함되어 있습니다. 각 함수의 설명과 파라미터, 예제 코드는 아래를 참고하세요.