>Java >java지도 시간 >Jersey RESTful 웹 서비스에서 추가 JSON 데이터가 포함된 파일을 업로드하는 방법은 무엇입니까?

Jersey RESTful 웹 서비스에서 추가 JSON 데이터가 포함된 파일을 업로드하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-03 07:34:09471검색

How to Upload Files with Additional JSON Data in a Jersey RESTful Web Service?

Jersey RESTful 웹 서비스에서 추가 데이터와 함께 파일 업로드

단일 REST 호출로 다른 객체 데이터와 함께 파일을 업로드하려면 다음을 수정하세요. uploadFileWithData 메소드는 다음과 같습니다:

@POST
@Path("/upload2")
@Consumes({MediaType.MULTIPART_FORM_DATA, MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response uploadFileWithData(
        @FormDataParam("file") InputStream fileInputStream,
        @FormDataParam("file") FormDataContentDisposition contentDispositionHeader,
        @FormDataParam("emp") String employeeJson) {

    // Deserialize the employee data from JSON
    JacksonJsonProvider provider = new JacksonJsonProvider();
    Employee emp = provider.readFrom(Employee.class, employeeJson);

    // ...business logic...
}

키 요점:

  • Employee 객체를 사용하는 대신 직원 데이터를 원시 JSON 문자열(String EmployeeJson)로 수신합니다.
  • Jackson의 JacksonJsonProvider를 사용하여 JSON 문자열을 역직렬화합니다. Employee 개체.
  • 제공자가 JAX-RS에 등록되어 있는지 확인하세요.

Postman 문제 해결:

Postman은 개별 본문 부분에 대해 Content-Type을 자동으로 설정하지 않을 수 있습니다. 이 문제를 해결하려면:

  1. Postman 편집기에서 요청 본문을 엽니다.
  2. "emp" 부분을 마우스 오른쪽 버튼으로 클릭하고 "편집" 또는 "헤더 추가"를 선택합니다.
  3. Content-Type을 application/json으로 설정합니다.

대안 해결 방법:

또는 REST 메서드에서 명시적으로 Content-Type을 설정할 수 있습니다.

@POST
@Path("/upload2")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFileAndJSON(
        @FormDataParam("emp") FormDataBodyPart jsonPart,
        @FormDataParam("file") FormDataBodyPart bodyPart) {

    jsonPart.setMediaType(MediaType.APPLICATION_JSON_TYPE);
    Employee emp = jsonPart.getValueAs(Employee.class);

    // ...business logic...
}

참고:

HttpUrlConnection이 아닌 다른 커넥터를 사용하는 경우 관련 댓글에서 설명한 문제가 발생할 수 있습니다.

위 내용은 Jersey RESTful 웹 서비스에서 추가 JSON 데이터가 포함된 파일을 업로드하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.