2017-04-13 4 views
0

Banner 리소스가 다른 두 리소스 : PlaceholderPage과 관련된 REST API를 설계 중입니다. REST API 유효하지 않은 FK로 리소스 게시 후 오류 코드

Placeholder와 관계 null 될 수 있지만은

하는 BannerPage 관련되어야한다. 비즈니스 규칙은 페이지가 항상 독립적으로 생성되도록 정의합니다. 그런 다음 새로운 Banner 리소스의 경우 페이지가 항상 존재하며 페이지의 ID를 매개 변수로 전달할 수 있습니다. 이것은 null 일 수 있지만 Placeholder에도 동일하게 적용됩니다.

그래서 저는 다음과 같이 Banner 자원도 (대신 중첩 된 자원의) 독립적으로 생성 할 수 있습니다 결정 :

POST https://api.example.com/banners 
{ 
    "name": "banner's name", 
    "page": "PAGE_ID", 
    "placeholder": "PLACEHOLDER_ID", 

    ... other parameters 
} 

page 또는 placeholder가하는 제공 할 때 API에 의해 반환해야 어떤 오류 코드 존재하지 않습니까?

HTTP 404를 반환하지만 이상하게 느껴집니다. 나는 약 409를 생각했지만, 이것은 갈등처럼 보이지 않는다.

PD : 중첩 된 URL을 POST /pages/<page_id>/banners으로 사용하면 404는 존재하지 않는 page에 적합하지만 여전히 placeholder과 동일한 문제가 있습니다.

+0

(값이 잘못되고 있는지를 나타내는) 당신이 400 잘못된 요청을 반환 무효 POST/pages/page_id/banners '를 사용할 때가 아니라 POST 요청 본문의 형식을 사용합니다. 그리고 그 중 하나를 사용하든 다른 것을 사용하든 자원에 액세스하는 방법에 따라 다릅니다. 그래서 이것은 정확한 복제물이 아닙니다. – andih

+0

@andih 나는 한 번 더 질문을 읽어 본다. 나는 아직도 그것을 복제본으로 본다. OP는 요청 본문에서 보낸 ID를 염려합니다. URL에서 보낸 것의 경우 '404'는 문제의 OP로 작업을 수행합니다. –

+0

@ CássioMazzochiMolin 당신이 고정/주어진 배너 자원의 첫 번째 아이디어를 가지고있는 한. 저자는 이것이 두 번째 방법을 제안했기 때문에 이것이 정확한 형태인지 여부를 확신 할 수없는 것으로 보인다. 두 번째 접근법에서 그는 placeholder를 다루는 방법을 정말로 모른다. 하나는 또 다른 방법을 사용하는 이유와 두 번째 것에 자리 표시자를 추가하는 방법을 설명 할 수 있습니다 .... – andih

답변

0

당신이 POST /banners를 사용하여 배너 자원을 만들려한다고 가정하고 배너 자원

  • 값은 값이 기존이어야 기존 PAGE_ID
  • 옵션 placeholder 속성이어야합니다 필요한 page 속성이 PLACEHOLDER_ID
  • 및 이름 및 기타 속성또한 제어해야한다고 가정합니다.
  • 게시물에 404 반환는

/배너

소비자가 유효하지 않은 모든 속성 없음에서 제공 할 수있는 좋은 생각이 아니다. 단지 page 당신은 placeholder가 유효하지 않은 경우 404

  • 당신이 404
  • 만약 pageplaceholder는 모두 무효 반환 반환 무효 인 경우

    • : 그런 뭔가를 줄 것이다 당신의 아이디어에 따라 두 값이 모두 유효하지 않음을 나타내는 404를 반환해야합니다.
    • 다른 속성이 유효하지 않은 경우 아마도 400 잘못된 요청을 반환합니다.
    • page 및/또는 placeholder 및 기타 속성이 유효하지 않은 경우 어떤 상태가 반환됩니까? 404 또는 400?

    다소 복잡하고 일관성이 없으므로 API 소비자에게는 실제로 사용할 수 없습니다.

    400 잘못된 요청

    이 사용 사례를 처리하는 가장 좋은 방법은 기본 Client Error로 제공된 자료에있는 모든 가능한 오류를 고려하기 때문에 400 Bad Request 상태를 사용하는 것입니다 포스트/배너를위한 더 나은 솔루션입니다. 응답 본문에는 유효하지 않은 각 속성에 대한 각 오류에 대한 설명이 포함됩니다.

    그러나 POST/페이지/페이지 ID/자리/placeholder_id/배너

    POST /pages/<page_id>/banners와 청소기 솔루션 거기 당신은 더 밀어 필요가 거의 좋은 생각이다.

    bannerpage에있는 placeholder입니다. 사실이라면 POST /pages/<page_id>/placeholders/<placeholder_id>/banners을 만들어 배너를 만들 수 있습니다. page_idpage_id이 유효하지만 placeholder_id가 유효하지 않은 경우 404 (나타내는 '페이지를 찾을 수 없습니다')

  • 를 반환 무효 인 경우

    • 당신은 404 (나타내는 '을 (를) 찾을 수 없습니다 장소 홀더')
    • 하는 경우를 반환 page_idplaceholder_id은 유효하지만 배너의 속성에 매개 변수를 전달하는 경우는 중복으로 간주 될 수 CássioMazzochiMolin @
  • 관련 문제