2014-02-24 4 views
4

공용 RESTful JSON API를 구축하고 지정된 속성이없는 경우 POST/PUT 요청의 모범 사례를 파악하려고합니다. 우리는 HTTP 오류를 던져야 하나, 아니면 그냥 건너 뛰고 다른 모든 속성을 적용해야합니까?속성이 존재하지 않을 때 REST JSON API에서 POST/PUT

{ 
    "name" : "Test", 
    "property_doesnt_exist" : "that's sad" 
} 

답변

4

서버에 대한 공통 규칙은 귀하가 수용하는 것에 관대하고 귀하가 생산하는 것에 엄격합니다.

나는 이러한 입력을 받아 들여 가능한 한 많이 얻는 것을 선호합니다. 입력의 알 수없는 속성은 무시됩니다.

4

HTTP 422 : 처리 할 수 ​​없음 엔티티

422 (처리 할 수 ​​없음 엔티티) 상태 코드를 요청 엔티티 (의 컨텐츠 유형 그러므로 415 (되지 않는 미디어 유형) 상태 코드 부적절한 이해 수단), 요청 엔터티의 구문이 정확하므로 (400 (잘못된 요청) 상태 코드가 부적절 함) 포함 된 명령을 처리 할 수 ​​없습니다. 예를 들어,이 오류 조건은 XML 요청 본문에 형식이 올바르지 만 구문 적으로 오류가있는 XML 명령어가 포함 된 경우에 발생할 수 있습니다. RFC4918

메시지에 잘못된 속성이있는 경우 유효한 메시지 속성을 추가하지 않는 것이 일반적입니다.

+0

github이 inavlid 매개 변수를 건너 뛴다는 것을 알고 있습니다. 그 뒤에있는 아이디어가 뭔지 알아? – Max

+0

이 일반적인 관행은 어디에 있습니까? –

+0

@LutzHorn은 예를 들어 메시지를 준수해야하는 대부분의 중요한 응용 프로그램에 사용됩니다. XML 스키마 또는 일부 메시지 설명. – supertopi

0

해당 질문에 대답 할 때 버전을 고려해야합니다. 적절한 기본값으로 작동 할 수있는 예상보다 적은 인수를 보내는 오래된 클라이언트를 지원합니까? 아니면 최신 클라이언트가 구형 서버 구현에 너무 많은 인수를 전송할 수 있도록 둘 이상의 서버 구현이 있습니까? 이 중 하나에 대한 대답이 예인 경우 입력 거부에주의해야합니다.

관련 문제