, 당신은 의식적인 결정 만든처럼 된 IQueryable 방법 내에서 404 오류를 던질 수 그 HTTP 리소스는 컬렉션입니다. 컬렉션은 비어있을 수 있지만 빈 컬렉션은 전체 컬렉션과 같은 유효한 리소스입니다. 컬렉션이 발견되었고 정확한 응답은 404가 아닌 200입니다.
HTTP 요청이 특정 항목 (예 : .. 인 경우, 경로가 ~/customers/: id), 404 상태의 HTTP 응답을 반환하는 것이 좋습니다. 원하는 경우 두 가지 종점을 모두 가질 수 있습니다. Breeze는 당신을 IQueryable로 강제하지 않습니다. 그것은 단지 선택 사항입니다. 두 종류의 엔드 포인트를 혼합하여 사용할 수 있습니다.
더 큰 관심사는 데이터 (고객)와 UI (페이지) 사이에 혼동을 일으킬 수 있다는 점입니다. 웹 API가 페이지를 리턴하지 않습니다. 그것은 데이터를 반환합니다.
세부 화면이있는 "단일 페이지 응용 프로그램"을 만들고 있다고 가정합니다. 세부 화면으로 이동하여 ID로 해당 화면의 엔티티를 가져 오려고 시도하고 그러한 엔티티가 존재하지 않는다는 것을 발견하면 실제로 어떤 일이 일어나야하는지 결정해야합니다. 이제 어디를 가야할지 결정해야합니다.
해당 결정은 HTTP 상태 코드와 별개입니다. HTTP 상태 코드를 염려하지 않고 클라이언트 측 화면을 안전한 위치 (예 : 고객 목록)로 리디렉션 할 수 있습니다. HTTP 상태 코드는 웹 통신을위한 HTTP 프로토콜의 일부입니다. 애플리케이션의 자체 클라이언트 화면 탐색 기능이 웹을 넘지 않으므로 해당 프로토콜을 채택 할 필요가 없습니다.
웹 API가 빈 콜렉션을 반환했음을 감지해야합니다. 당혹스럽지 않습니다. HTTP 경찰은 당신을 체포하지 않을 것입니다. 적절한 방향으로 재 전달하십시오.
감사 와드와 제이. 이 경우 재 방향이 가장 합리적이라고 생각합니다. +1 재미있는 대답 :) –