POST /v2/projects/:project_id/order/tentative_with_vdp를 쓰고, 그 밖의 흐름(확정, 취소)은 주문과 같습니다.
배우는 것
- 가변 데이터를 JSON과 파일 두 방법으로 보내는 법
- 템플릿 방식에 맞는 dataset 형식
- VDP 주문을 취소할 때 주의할 점
데이터가 작을 때
JSON으로 보냅니다.callEdicus와 TentativeOrderResult는 Server API 호출하기에서 만든 래퍼와 타입입니다.
대량 데이터일 때
파일로 보냅니다. 이때는content-type을 직접 지정하지 않고 FormData를 그대로 넘겨 런타임이 boundary를 붙이게 합니다. 위 래퍼는 JSON 전용이라 fetch를 직접 씁니다.
multipart로 보낼 때는
vdp_dataset_file을 제외한 모든 필드가 문자열로 전달되고, 서버가 숫자와 불리언으로 바꿔 검증합니다. vdp_dataset_file이 있으면 vdp_dataset은 무시됩니다. 요청 body는 50MB를 넘을 수 없고, 넘으면 413 payload_too_large입니다.
dataset 형식
어노테이션 방식으로 만든 템플릿:segment: true를 함께 줍니다.
vdp_dataset에는 dataset 객체를 그대로 넣습니다. 서버가 직렬화해서 저장하므로 미리 JSON.stringify하면 문자열이 한 번 더 인코딩됩니다. 파일로 보낼 때만 vdp_dataset_file에 JSON 문자열을 담습니다.
id는 템플릿의 변수 이름입니다. 변수를 만드는 방법은 변수와 데이터 병합에 있습니다.
됐는지 확인
응답으로
order_id와 status: 'ordering'을 받으면 잠정 주문이 된 것입니다. 이어서 확정 주문을 하면 렌더링 대상이 됩니다. 결과 파일에 행마다 값이 들어갔는지는 테스트 주문과 렌더링으로 확인합니다.다음 단계
주문
확정 주문과 취소, 주문 body의 다른 필드를 봅니다.
TnView와 VDP
가변 데이터를 넣은 결과를 주문 전에 미리 봅니다.