한다고 가정 우리는이 POST를 제공하는 일부 편안하고 자원을 단지 문자열입니다 @Produces @Consumes 의미 ... JSON 아니면
@POST
@Produces("application/json")
@Consumes("application/json")
public String doPostJson(String string) {
...
}
는 (내 서버에 위의를 실행 할 수 있었다 나는 가정하고 있으므로 이것은 유효한 구현입니다)
이제 doPostJson()이 String을 가져오고 String을 반환한다고 생각합니다. 이 문자열은 JSON 유효한 문자열과 완전히 다른 것일 수 있습니다. 내가 맞습니까? 그래서 여기에 문자열을 사용할 수 있다면 "application/json"의 의미는 무엇입니까?
기타 : 다른 한편으로, 나는 이것을 사용할 수 있을까요?
@POST
@Produces("text/plain")
@Consumes("text/plain")
public String doPostJson(String string) {
... /* read passed parameter as JSON valid string and return JSON string */
}
아마도 내 API의 유일한 소비자이기 때문에 차이가 느껴지지 않을 수 있습니다 ...하지만 '공용'사용자는 서버에서 반환 된 JSON의 구조를 알아야하므로이 API를 사용하는 모든 사용자는 JSON을 알고/기대하십시오. 그게 사실이야? 예를 들어 서버 인 경우 추가 유효성 검사를 위해서만 Content-Type입니까? API에서 무언가를 변경하고 다른 데이터 형식을 사용합니까? – flyer
@flyer 예 Content-Type을 사용하면 웹 서비스 사용자가 웹 서비스를 사용하는 방법을 결정할 수 있습니다. 웹 서비스는 json이나 xml과 같이 다른 내용을 생성 할 수 있습니다. 이제 소비자가 어떻게 결정할 지, 응답을 파싱하려면 어떤 파서를 사용해야하는지. 따라서 소비자는 content-type 헤더를 조사하여 대응하는 파서를 가져와 응답을 소비합니다. –