2014-11-12 4 views
0

그럼 UsersController라는 WebApi 컨트롤러가 있다고 가정 해 봅니다. 의 다음과 같은 예를 살펴 보자 : ID로 사용자의WebApi 응답 코드

1.Navigating에/사용자/1 반환 JSON을 = 1. HTTP 응답 코드/사용자/1 (참고로 200

2.Navigating 될 것입니다 URL을 잘못 입력했습니다!) 응답 코드 404가 반환됩니다. 아무 것도 할 필요가 없으며 웹 서버에서 404 코드를 반환합니다.

이제 Id/2 사용자가 데이터베이스에없는 경우 URL/Users/2에서 어떤 응답 코드 (200 또는 404)를 반환해야합니까? 그리고 왜.

답변

1

URL이 유효하지만 필수 리소스가 없으므로 NotFound (404)를 반환해야합니다. this을 확인하십시오.

+0

감사합니다. Omar, 나는 이와 같은 답장을받을 것으로 예상했습니다. 좀 더 재미있게 만들어 보겠습니다. - WebApi를 사용하여 PUT을 통해 사용자를 편집 할 수도 있습니다. - 사용자가 팀에 속해 있습니다. - UserId = 1을 편집하려고하는데 TeamId = 5에서 TeamId = 6으로 이동했습니다. 이제 우리는 다음과 같은 세 가지 시나리오를 사용할 수 있습니다 : 1. API 사용자가 잘못된 URL을 요청했습니다.2. UserId = 1에 3. 새 시나리오 : TeamId = 6이 삭제되었습니다. 세 번째 시나리오에서 404를 반환해야합니까? "사용자가 삭제되었습니다"또는 "팀이 삭제되었습니다"와 같은 처리 된 시나리오의 경우 200, "웹 리소스를 찾을 수 없음"에 대해 404를 리턴하는 것이 훨씬 논리적 인 것 같습니다. – Andrew72

+0

시나리오 3의 경우, 이 사용자에게 주소 나 다른 엔티티가 연결되어있는 경우 (AddressId = 10)와 같은 행의 존재 여부를 확인해야하기 때문에 조사를 수행해야합니다. 1. 사용자 테이블과의 동시성 구현하기 2. TeamId 6이 없기 때문에 데이터베이스 저장에 실패하게되고 외부 키 저장이 실패하게됩니다. –

+0

당신이 말한 모든 것에 동의하십시오. 질문은 응답 코드에 대한 의사 결정으로 어떻게 변환 될까요? 내 코드가 비표준 시나리오 (사용자를 찾지 못했거나 찾지 못한 팀 또는 찾지 못한 것이 무엇이든)를 처리하고 고객이 요청한 웹 리소스가있는 경우 내 웹 서버가 404를 돌려 주면 항상 200을 반환하는 것이 더 논리적으로 보입니다. 내 비즈니스 로직과 아무 관련이없는 웹 서버에서 발견되지 않았습니다. – Andrew72