program story

REST API에서 JSON을 반환하는 경우 어떤 MIME 유형입니까?

inputbox 2020. 11. 11. 20:00
반응형

REST API에서 JSON을 반환하는 경우 어떤 MIME 유형입니까?


내 REST API는 JSON을 반환합니다.

현재 MIME 유형으로 text / plain을 반환하고 있지만 재미있게 느껴집니다. 내가 돌아 갈까요 application/x-javascript아니면 다른 유형인가요?

두 번째 질문은 오류 조건에 대한 HTTP 상태 코드에 관한 것입니다. 내 REST API가 오류 상태를 반환하면 JSON으로 반환됩니다.

{ result: "fail", errorcode: 1024, errormesg: "That sucked. Try again!" }

HTTP 상태 코드를 유지해야합니까 200 OK?


JSON의 사양을 제안 application/json하고, 그가에 의해 지원 될 것으로 보인다 IETFIANA 레지스트리.

두 번째 질문에서 메시지 처리가 어떤 식 으로든 실패하면 구조화 된 표준 오류 응답을 JSON 메시지로 반환해야한다고 생각합니다. 어떤 이유로 백엔드 핸들러로 메시지를 전달하지 못한 경우에만 HTTP 오류 코드를 고려해야합니다.

업데이트 2014-06-27 : 클라이언트 (브라우저)가 200 개의 응답으로 만 작업했던 시대는 오래되었고 RESTful API에 대한 일반적인 조언은 응답에 적합한 HTTP 응답 코드를 사용하고 성공적인 응답을 위해서는 2xx를 사용하라는 것입니다 (예 : 201 Created for PUT; 204 No Content for DELETE) 및 4xx 및 5xx (API 자체의 오류 포함).


JSON의 MIME 유형은 다음과 같습니다.

application/json

http://www.ietf.org/rfc/rfc4627.txt

http://www.iana.org/assignments/media-types/application/

더 구체적으로 여기 :

http://www.ietf.org/rfc/rfc4627.txt


HTTP 오류 상태와 애플리케이션 별 페이로드로 응답하는 것을 선호합니다.


아니요, 오류 조건에서 200을 반환하면 안됩니다.

상태 코드를 반복하거나 응답 페이로드에 더 자세한 오류 코드를 포함해도됩니다.


Content-type반환하기에 적절한 것은 RFC 4627application/json 에 따르면 MIME 유형 IANA도 등록합니다 (실제로 IANA 페이지에 표시됨). 물론 클라이언트를 작성한다면, 당신이 받아들이는 것에 좀 더 자유 로워지기를 원할 것이고, 그리고 .text/jsontext/x-json

이제 오류가있는 경우 HTTP 200을 반환 해서는 안됩니다 . 이는 근본적으로 RESTful이 아닙니다. 때때로 귀하의 오류와 정확히 일치하지 않는 것은 알고 있지만 RFC 2616 섹션 10.4 -10.5 에서 가장 가까운 4XX (클라이언트 오류) 또는 5XX (서버 오류) 오류 를 선택하고 JSON에서 더 정확합니다.


"REST API"가 REST 아키텍처를 따르고 자 함을 의미하는 경우 사용할 미디어 유형은 REST API를 통해 노출하려는 기능에 따라 결정됩니다. 새 개체를 만들 수 있기를 원하십니까? 개체 목록을 쿼리 하시겠습니까? 개체를 수정 하시겠습니까? 그렇다면 사용하기에 좋은 RESTful 미디어 유형은 vnd.collection + json 일 수 있습니다. 왜냐하면 json 객체 컬렉션을 조작하기 위해 하이퍼 텍스트 링크 인터페이스를 정의하기 때문입니다.

참고 : RESTful API는 미디어 유형 application / json을 사용할 수 있지만이 미디어 유형에는 하이퍼 텍스트 링크 RESTful 인터페이스가 없으므로 상태 변경의 종점이됩니다.

HTTP RPC 호출이 애플리케이션 / json 개체를 반환하고 다른 HTTP RPC 호출이 이러한 개체를 조작하는 웹 API 아키텍처를 따르는 것도 완전히 허용되며, 상태 변경을 사용하고 탐색하기위한 하이퍼 텍스트 링크 인터페이스가 없습니다. 그러나 이것은 REST가 아닙니다.

REST에 대한 다음 설명이 마음에 듭니다 (REST 작성자가 제공).

REST API는 하이퍼 텍스트 기반이어야합니다.

즉, 애플리케이션 상태 엔진 (및 API)이 하이퍼 텍스트에 의해 구동되지 않는 경우 RESTful이 될 수 없으며 REST API가 될 수 없습니다. 기간.

또한 해당 게시물의 토론에서 RESTful 애플리케이션의 예가 있습니다. Lost Boys의 Spam-E REST 애플리케이션

참고 URL : https://stackoverflow.com/questions/404470/what-mime-type-if-json-is-being-returned-by-a-rest-api

반응형