2013-01-02 3 views
3

이 가능한 중복 :
REST response code for invalid dataHTTP 응답 코드는

은 다음과 REST 자원은 적이 :

 
POST /user/{primary_key} 

자원이처럼 작동하기위한 것입니다 "ADD/UPDATE"작업. 이것은이 사용 될 수 있다는 것을 의미한다 : 클라이언트가 새 사용자를 만들고 싶었 경우 기존 사용자

  • 업데이트 정보 새 사용자를 만듭니다

    • , 몇 가지 정보가 필요합니다

       
      POST user/{pimary_key} 
      Paylod: 
      - Username - (must be unique) 
      - Password 
      

      클라이언트가 기존 사용자를 간단히 업데이트하려는 경우 전화는 기본 키와 새롭거나 변경된 정보 만 포함하면됩니다. 예를 들어 :

       
      POST user/{pimary_key} 
      Paylod: 
      - favorite hamburger type 
      

      이 상황은 무효 클라이언트에서 여러 요청에 대한 잠재적 작성

      • 충돌 - 클라이언트는 이미 값으로 username 변경을 시도 기존 사용자를 업데이트 다른 사용자가 사용 중입니다.
      • 정보 누락 - 클라이언트는 사용자 이름 및 암호와 같은 필수 정보를 포함하지 않고 새 사용자를 만들려고합니다.

      이러한 경우 올바른 HTTP 응답 코드는 무엇입니까?

      감사합니다.

  • 답변

    10
    1. 코드 201 잘못된 입력 매개 변수에 대한
    2. 400 상당히 명백한 만든 사용자를 위해 가장 적합한, 구글 API는 그것을
    3. 을 사용합니다
    4. 는 상황을 충돌에 대한 409 최선을 것 같다 당신

    나는 것은 권장 합과 같은 끝으로 작성 및 편집을 분리하고, 다른 방법을 사용하십시오. - 작성하려면 POST, 갱신하려면 PUT. 사용자가 무언가를 수정하려고하지만 오타가있을 경우 어떻게해야합니까? 오류를 표시하는 것이 더 낫다.

    +0

    'POST'와 'PUT' 권고의 좋은 점. –

    6

    여기에는 "typical"HTTP responses to RESTful operations의 좋은 테이블이 있습니다.

    해당 테이블에서

    , 여기 POST 작업에 권장 내용은 다음과 같습니다

    200 (OK) - if an existing resource has been updated 
    201 (created) - if a new resource is created 
    202 (accepted) - accepted for processing but not been completed (Async processing) 
    
    301 (Moved Permanently) - the resource URI has been updated 
    303 (See Other) - e.g. load balancing 
    
    400 (bad request) - indicates a bad request 
    404 (not found) - the resource does not exits 
    406 (not acceptable) - the server does not support the required representation 
    409 (conflict) - general conflict  
    412 (Precondition Failed) e.g. conflict by performing conditional update 
    415 (unsupported media type) - received representation is not supported 
    
    500 (internal server error) - generic error response 
    503 (Service Unavailable) - The server is currently unable to handle the request