2017-04-23 9 views
0
@RequestMapping(value = "/test", method = RequestMethod.GET, produces = { "text/plain", "application/json" }) 

을 무시 :봄 RestController는 첫 번째 미디어 유형을 고려하고 내가 요청을 보내는 경우 나머지

curl --header "Accept: text/plain, application/json" "http://localhost:8229/test/test" 

그것은 HTML 응답 시체와 함께 406 수없는 응답을 다시 보냅니다. 예상 응답은 200 OK 인 JSON 객체입니다.

하지만 마임 유형의 역순 경우 :

curl --header "Accept: application/json, text/plain" "http://localhost:8229/test/test" 

은 다음 그것은 (JSON에서) 예상되는 응답을 보냅니다.

이 예상되는 동작입니까? 두 번째 미디어 유형을 무시하는 이유는 무엇입니까?

PS : 나는 봄 부팅 1.3.5 릴리스

을 사용하고

편집 : 나는 "Accept: */*"를 보낼 수 있다면이 같은 오류가 발생합니다. 이 API는 내부 조건에 따라 JSON 또는 text/plain을 반환 할 수 있습니다.

+0

콘텐츠 협상이 작동하는 방식이기 때문에. 가장 원하는 것에서부터 덜 원하는 것까지 작동합니다. 첫 번째 요청에서 JSON을 통해 텍스트를 선호합니다. 하지만 평범한 텍스트를 반환하기 위해 서버 측에서 아무 것도 구성하지 않았다고 의심됩니다. –

+0

특별히 구성해야합니까? 가장 바람직한 mime 형식이 반환되지 않으면 봄이 검사 할 것이라고 생각 했으므로 원하는 경우 적은 수를 확인한 다음 (반환 된 경우) 반환합니다. 나는 또한 "Accept : */*"시도했다, 나는 이것과 동일한 오류가있어. – Rushil

+0

질문을 편집했습니다 – Rushil

답변

2

서버 측에서 웹 구성 구성 요소를 구성하지 않았기 때문입니다. 구성하려면 Content Negotiation을 참조하십시오.

+0

xml 및 java 메소드에 구성이있는 것을 확인했습니다. 그러나 어노테이션 기반 구성은 표시되지 않습니다. 그 일을 할 수있는 주석이 있다는 것을 알고 있습니까? – Rushil

+0

해당 주제에는 xml 및 java 클래스 기반 구성이 있습니다. 거기에 특정 주석, xml보다는 자바 구성을 사용합니다. ContentNegotiationConfigurer 클래스를 사용하여 mediaType을 구성하는 등의 작업을 수행합니다. –