0

배경 : Foos 컬렉션에 대한 정보를 표시하는 웹 사이트가 있다고 가정 해 보겠습니다.잘못된 방법을 사용하고 자원이 존재하는지 모르겠다면 404 또는 405로 응답해야합니까?

https://example.com/foo/{foo-id} 

나는 단지 respont 요청을 GET 할 수 - 당신은 POST 또는 PUT 또는 푸를 삭제할 수 없습니다 :의 URL :의 양식에 있습니다. 특정 ID가 실제 Foo에 해당하는지 확인하는 것은 비용이 많이 드는 작업이므로 피하고 싶습니다.

질문 :/foo/12345에 대한 POST 요청에 어떻게 대응합니까? 이상적인 것은 Foo가 존재하는지 확인하는 것입니다. 그렇다면 405 (Method Not Allowed)를 보냅니다. 그렇지 않은 경우 404 (찾을 수 없음)를 보냅니다. 그러나 Foo가 존재 하는지를 확인하는 것은 비용이 많이 들며 올바른 방법을 사용하기조차 힘든 바보 같은 사람에게는 그 에너지를 낭비하고 싶지 않습니다.

은 그래서 나는 두 가지 옵션이 왼쪽 오전 :

  • 항상 실제로 뭔가를있을 수 있습니다에도 불구하고, (404)로 응답.
  • 거기에는 아무 것도 없을지라도 항상 405로 응답하며 올바른 방법으로 요청을 다시 보내면 사용자 에이전트가 404로 인사합니다.

어떤 옵션이 HTTP 표준과 거의 일치합니까? 그들 중 누구라도 표준에 전혀 의지하고 있습니까?

답변

1

알고있는 한 HTTP 사양 자체에 관해서는 엄격한 규칙이 없습니다.

그러나 이것은 나의 개인적인 의견 요청 유형을 확인, 요청에 제공하는 응답의 종류를 결정하는 단계 요청을 경로을 확인하기 전에 제공해야한다는 것입니다 (그것도가 있는지) .

웹 서버 (또는로드 밸런서)를 구성하여 요청 유형이 웹 소프트웨어에 영향을주기 전에 모든 잘못된 유형의 요청 메소드를 차단하도록 합리적인 방법을 고려해보십시오. 이것은 경로 앞에 요청 방법을 확인해야한다는 것을 다시 한 번 제안합니다.

Foo이 있는지도 확인하는 것은 비용이 많이 드는 작업이므로 처음부터 올바른 요청을 보내 게끔주의를 기울 였는지 확인하는 것이 좋습니다. !

그렇습니다. 그렇다면 항상 405를 반환 할 것입니다.

관련 문제