RESTful 인터페이스를 설계 할 때 요청 유형의 의미는 설계에 필수적으로 간주됩니다.
- GET- 콜렉션 나열 또는 검색 요소
- PUT- 컬렉션 또는 요소 교체
- POST- 콜렉션 또는 요소 작성
- 삭제 -음, 음, 컬렉션 또는 요소 삭제
그러나 이것은 "검색"의 개념을 다루지 않는 것 같습니다.
예를 들어 구직 사이트를 지원하는 웹 서비스 제품군을 설계 할 때 다음 요구 사항이있을 수 있습니다.
- 개별 구인 광고 받기
- GET 에
domain/Job/{id}/
- GET 에
- 구인 광고 만들기
- POST 로
domain/Job/
- POST 로
- 구인 광고 업데이트
- PUT 에
domain/Job/
- PUT 에
- 구인 광고 삭제
- DELETE 에
domain/Job/
- DELETE 에
"Get All Jobs"도 간단합니다.
- GET 에
domain/Jobs/
그러나 직업 "검색"은 어떻게이 구조에 속합니까?
당신은 할 수 는 "목록 모음"의 변형의 주장과 같이 구현 :
- GET 에
domain/Jobs/
그러나 검색 은 복잡 할 수 있으며 긴 GET 문자열을 생성하는 검색을 생성 할 수 있습니다. 즉, 여기 SO 질문을 참조 하면 약 2000 자보다 긴 GET 문자열을 사용하는 데 문제가 있습니다.
"잡음"예제를 계속하여 패싯 검색에 예제가있을 수 있습니다.
"테크놀로지", "직업 제목", "징계"및 자유 텍스트 키워드, 연령, 위치 및 급여 등의 패싯을 검색 할 수 있습니다.
유동적 인 사용자 인터페이스와 수많은 기술 및 직책을 사용하면 검색에 많은 패싯 선택이 포함될 수 있습니다.
이 예를 작업이 아닌 CV로 조정하면 더 많은 패싯을 가져올 수 있으며, 100 개의 패싯을 선택하거나 각 50 자 길이 인 40 개의 패싯 (예 : 직책, 대학 이름, 고용주 이름).
이 경우 검색 데이터가 올바르게 전송되도록 PUT 또는 POST를 이동하는 것이 바람직 할 수 있습니다. 예 :
- POST 로
domain/Jobs/
그러나 의미 적으로 이것은 컬렉션을 만드는 지침입니다.
당신은 수 또한 검색의 생성과이를 표현하는 것입니다 말 :
- POST 로
domain/Jobs/Search/
또는 (아래의 불타는 문법에서 제안한 바와 같이)
- POST 로
domain/JobSearch/
의미 상 의미가있는 것처럼 보이지만 실제로는 아무것도 만들지 않고 데이터를 요청하고 있습니다.
따라서 의미 상 GET 이지만 GET 이 필요한 것을 지원한다고 보장하지는 않습니다.
따라서 문제는-RESTful 디자인을 가능한 한 충실하게 유지하려고 노력하면서 HTTP의 한계를 지키면서 검색에 가장 적합한 디자인은 무엇입니까?
domain/Jobs?keyword={keyword}
. 이것은 나를 위해 잘 작동합니다 :) 내 희망은SEARCH
동사가 표준이 될 것입니다. programmers.stackexchange.com/questions/233158/…