나는 프로젝트를 진행 중이며 약 1 시간 이상 직장에서 사람들과 논쟁을 벌이고 있습니다. 나는 스택 교환 사람들이 무엇을 말할지 알기로 결정했습니다.
우리는 시스템에 대한 API를 작성 중입니다. 조직 트리 또는 목표 트리를 반환 해야하는 쿼리가 있습니다.
조직 트리는 사용자가있는 조직입니다. 즉,이 트리는 항상 존재해야합니다. 조직에는 항상 목표 트리가 있어야합니다. (논쟁이 시작된 곳). 트리가 존재하지 않는 경우 동료는 상태 코드 200으로 응답에 응답하는 것이 옳은 것으로 결정했습니다. 그런 다음 트리가 없을 때 응용 프로그램이 분리되어 코드가 수정되도록 요청했습니다.
나는 화염과 분노를 아끼려 고 노력할 것이다.
나무가 없을 때 404 오류를 발생시키는 것이 좋습니다. 적어도 뭔가 잘못되었다는 것을 알려주는 것입니다. 200을 사용할 때 오류를 처리하려면 성공 콜백에서 응답에 특별한 검사를 추가해야합니다. 객체를받을 것으로 예상되지만 아무것도 발견되지 않아 실제로 빈 응답을받을 수 있습니다. 응답을 404로 표시하는 것은 완전히 공평한 것 같습니다. 그리고 전쟁이 시작되고 HTTP 상태 코드 스키마를 이해하지 못했다는 메시지가 나타납니다. 그래서 나는 여기에 있으며이 경우 404의 문제점을 묻고 있습니까? 나는 " 아무것도 찾지 못해 200을 돌려주는 것이 옳다 "라는 주장을 얻었다 . 나는 나무가 항상 있어야하기 때문에 그것이 잘못되었다고 생각합니다. 우리가 아무것도 발견하지 않고 무언가를 기대하고 있다면 404가되어야합니다.
더 많은 정보,
가져온 URL을 추가하는 것을 잊었습니다.
조직
/OrgTree/Get
목표
/GoalTree/GetByDate?versionDate=...
/GoalTree/GetById?versionId=...
내 실수는 두 매개 변수가 모두 필요합니다. 날짜로 구문 분석 할 수있는 버전 날짜가 제공되면 마감 수정본을 반환합니다. 과거에 무언가를 입력하면 첫 번째 개정판이 반환됩니다. 존재하지 않는 ID를 가진 ID에 의해 200으로 빈 응답을 반환 할 것으로 의심됩니다.
특별한
또한 문제에 대한 가장 좋은 대답은 조직을 만들 때 기본 개체를 만드는 것입니다. 트리가 유효하지 않아야하며 정의되지 않은 동작으로 간주되어야합니다. 두 트리없이 계정을 사용할 수있는 방법은 없습니다. 따라서 항상 존재해야합니다.
또한 이것을 연결했습니다 (하나는 비슷하지만 찾을 수 없습니다)
http://viswaug.files.wordpress.com/2008/11/http-headers-status1.png
/GoalTree/GetById?versionId=CompletelyInvalidID
반환 해야 합니까? 이름 /GoalTree/GetById?versionId=CompletelyInvalidID
이 지정된 리소스를 찾을 수 없으므로 성공하지 못했습니다 .