본문 바로가기

Programming/Web

HTTP Status code 400 vs 404

반응형

 

어떤 API가 파라미터의 유효성을 검사한 후 유효하지 않을 경우 404 (NotFound)를 던지는 것을 보고 찾아보게 되었다.

if (mode.ToLower() == "pay")
{
	isPay = true;
}
else if (mode.ToLower() == "free")
{
	isPay = false;
}
else
{
	return Request.CreateResponse(HttpStatusCode.NotFound);
}

//...

필요한 파라메터를 다 전달했지만 하나이상의 파라미터가(위 코드에선 mode)

유효하지 않아 정상적인 동작을 수행할 수 없는경우 404 (NotFound)를 던지는것이 맞는가?

 

404 Not Found : 요청받은 리소스를 찾을 수 없는 경우 사용. (브라우저에서는 알려지지 않은 url을 의미)

400 Bad Request : 잘못된 문법으로 인하여 서버가 요청을 이해할 수 없는 경우 사용.

 

위 예시의 경우 리소스 자체를 찾을 수 없는 경우가 아니고

리소스는 찾았으나 일부 파라미터가 유효하지 않아 작업을 처리할 수 없는 케이스이므로 

404 (Not Found) 보단 400 (Bad Request)가 좀 더 적절하겠다.

 

 

ref : https://stackoverflow.com/questions/25378624/should-a-restful-api-return-400-or-404-when-passed-an-invalid-id

반응형