NodeJS 앱에서 Java Jersey 2.0 API 백엔드로 멀티 파트 요청을 만들기 위해 request-promise
npm lib를 사용하고 있습니다. request
은 form-data
lib를 사용하여 호출을하기 때문에 문자열, 버퍼 및 스트림 만 보낼 수 있음을 알았습니다. 자바 백엔드 측면에서 JSON 객체를 스트리밍하여 스트림으로 전송 [NodeJS]
@FormDataParam
들로 POJO 객체를 기대하고있다 :
@GET
@ApiOperation(
value = "Gets party metadata by party_id",
notes = "Gets party metadata by party_id"
)
@ApiResponses(value = {
@ApiResponse(code = 200, message = "metadata")
})
@Path("party")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Metadata getByPartyId(
@ApiParam(value = "partyId", required = true) @NotNull @QueryParam("partyId") String partyId,
@ApiParam(value = "party metadata", required = true) @FormDataParam("metadata") Metadata metadata
) {
return folderCtrl.getByPartyId(partyId);
}
이 심지어 올 여러 POJO 객체를 기다릴 엔드 포인트는 내가 그 유효성을 검사 주석 검증 메커니즘을 사용하고 있습니다 엔드 포인트로 수신시. 지금까지는 POJO를 JSON 데이터가 들어있는 파일로 보내므로 원하는 동작을 시뮬레이션 할 수있었습니다. Jersey/Jackson은이를 POJO로 변환하고 수명주기를 계속할 수있었습니다.
이제 NodeJS에서 이러한 끝점을 호출해야합니다. 그럼 그걸 가지고 무엇을 보낼 수 있는지 알고 있습니다. JSON 개체를 스트림으로 변환하고 이전 시나리오 에서처럼 POJO 개체를 받기 위해 보내는 옵션이 필요하다고 생각합니다.
내 질문은 NodeJS의 객체를 "스트리밍"하고 request-promise
과 함께 전송하는 방법입니다. "Multer"를 사용하는 것을 잊지
_http_outgoing.js:502
throw new TypeError('First argument must be a string or Buffer');
^
TypeError: First argument must be a string or Buffer
at ClientRequest.write (_http_outgoing.js:502:11)
at Request.write (/home/tepo/IdeaProjects/rig/node_modules/request/request.js:1514:27)
at FormData.ondata (internal/streams/legacy.js:16:26)
at emitOne (events.js:96:13)
at FormData.emit (events.js:191:7)
at FormData.CombinedStream.write (/home/tepo/IdeaProjects/rig/node_modules/combined-stream/lib/combined_stream.js:118:8)
at DelayedStream.ondata (internal/streams/legacy.js:16:26)
at emitOne (events.js:96:13)
at DelayedStream.emit (events.js:191:7)
at DelayedStream._handleEmit (/home/tepo/IdeaProjects/rig/node_modules/delayed-stream/lib/delayed_stream.js:82:15)
at Readable.source.emit (/home/tepo/IdeaProjects/rig/node_modules/delayed-stream/lib/delayed_stream.js:29:19)
at Readable.read (/home/tepo/IdeaProjects/rig/node_modules/readable-stream/lib/_stream_readable.js:386:26)
at flow (/home/tepo/IdeaProjects/rig/node_modules/readable-stream/lib/_stream_readable.js:734:34)
at resume_ (/home/tepo/IdeaProjects/rig/node_modules/readable-stream/lib/_stream_readable.js:717:3)
at _combinedTickCallback (internal/process/next_tick.js:80:11)
at process._tickCallback (internal/process/next_tick.js:104:9)
괜찮 았지만, 어떻게해야할까요? – greengold