JAX-RS 자원이 있음을 소비 할 수있는 표현의 MIME 미디어 타입을 지정하는 @Consumes
주석이 있습니다 고객이 보냈습니다. 당신이 Content-Type: application/json
의 헤더, 당신에게 반환하는 200 OK
상태로 응답 요청을 보내는 경우
@Path("/foo")
public class FooResource {
@POST
@Consumes("application/json")
public Response bar(InputStream entity) {
return Response.ok.build();
}
}
: 다음
는
application/json
미디어 유형의 요청을 수락하는 예입니다. 그러나 헤더가 Content-Type: application/xml
인 요청을 보내면 406 Not Acceptable
의 응답이 반환됩니다. @Consumes
은 JSON으로 요청을 허용하지만 다른 요청은 허용하지 않기 때문입니다.
@Consumes
은 요청 엔터티를 구문 분석하는 방법에 대해주의하고 있지만 받아 들여야하는 미디어 유형을 지정하는 것을 볼 수 있습니다.
위 예제의 매개 변수는 InputStream entity
입니다. 그것은 사실 요청 엔터티이다. bar
의 리소스 메소드에서 JSON 파서 라이브러리로 구문 분석 할 수 있습니다. Jackson : 당신이 "안녕하세요"의 몸 요청을 보내는 경우
@POST
@Consumes("application/json")
public Response bar(InputStream entity) {
ObjectMapper mapper = new ObjectMapper();
String json = mapper.readValue(inputStream, String.class);
System.out.println(json);
return Response.ok.build();
}
, 당신은 당신의 콘솔에 "Hello World"가 표시됩니다. Jackson
은 RFC 7159에 지정된 JSON 문서를 구문 분석하는 방법을 알고 있지만 JAX-RS는 구문 분석하지 않는 방법을 알고 있기 때문입니다.
실제로 RESTEasy와 같은 JAX-RS 구현은 이미 널리 사용되는 JSON 구문 분석기 라이브러리로 JSON을 지원합니다. 따라서 다음과 같이 리소스 메소드를 만들면됩니다.
@POST
@Consumes("application/json")
public Response bar(String json) {
System.out.println(json);
return Response.ok.build();
}
같은 결과가 나타납니다.
JAX-RS 뒤에는 HTTP 요청 본문을 Java 객체로 변환하는 MessageBodyReader이 있습니다. 표현으로부터 대응하는 Java 타입에의 매핑 서비스를 제공하는 것은 클래스입니다. 예를 들어 jackson-jaxrs-providers은 JSON 데이터 형식 용 JAX-RS MessageBodyReader
및 MessageBodyWriter
처리기를 구현합니다.
는 JAX-RS에 대한 자세한 내용은, 당신은 JSR-000339 JAX-RS 2.0 Specification
제 대답이 도움이되는지 알려주세요. –