2014-04-12 2 views
1

나는 REST API와 URI 디자인을 배우고 난 여기에 하나를 발견했다 : https://raw.githubusercontent.com/JeanVEGA/MI-MPR-DIP-Admission/master/examples/requests.shREST API 엔드 포인트 - 이상한 경로 매개 변수

내가 몇 가지 질문이 있습니다.

예를 들어 있습니다 :

User.resetPassword, 사용자의 {이메일}에 의한 익명

curl -i -X POST http://localhost:9090/admission/services/user/person/email:{email}/reset_password 

I 건축 email:{email}을 이해하지 않는다 ... 그것은 무엇을 의미합니까? 즉, String path 매개 변수가 있으면이 방법으로 처리해야합니다. 마찬가지의

가 여기에 있습니다 :

Term.get

curl -i -H "Accept: application/json" -H "X-CTU-FIT-Admission-Session: [session identifier from User.identity]" http://localhost:9090/admission/services/term/dateOfTerm:{dateOfTerm}/room:{room} 

room:{room} - 방 예를 123ABC 위해해야하기 때문이다? 그래서 그것은 숫자가 아니기 때문에 이렇게 쓰여질 필요가 있습니까?

그리고 내 마지막 질문 : 입학 코드에 의한 사용자에 대한

User.resetPassword, 사용자의 이메일로 알림을 보내이 {이메일} 질문

curl -i -H "X-CTU-FIT-Admission-Session: [session identifier from User.identity]" -X POST http://localhost:9090/admission/services/user/admission/{admissionCode}/person/email:{email}/reset_password 

내 poiont는 "reset_password"입니다 ... 나는 올바른 디자인 원칙으로 인해 동사가 URI에 없어야한다고 생각했다. 왜냐하면 동사가 URI에 있기 때문에 리소스가 실제로 작동한다는 것을 의미하기 때문이다.

답변

0

해당 URL은 리소스 식별자 일 수 있습니다. 따라서 고유 한 이메일 주소를 매개 변수로 대기하는 url template입니다. 템플릿에 가득은 다음과 같이 보일 것이다 :

./person/email:[email protected]/reset_password 

참고 : reset_password가 유효한 REST 자원 아닙니다

가와 POST 방법 (가 서비스하지 않는 자원을 설명하는) mostly for resource creation (아니다 업데이트 또는 부분 업데이트). 실제 REST 요청은 다음과 같이 :

PUT ./person/email:{email}/password "newpass" 
PUT ./person/{id}/password "newpass" 
PUT ./person/email:{email}/identification_factors/password "newpass" 
PATCH ./person/email:{email}/identification_factors {password: "newpass"} 

등등은 ...

+0

나는 내 유스 케이스에 물어 봐도 될까요? 나는 수집에서 소수의 알고리즘의 진화를 관리하는 하나의 시스템을 가지고있다. 최고 컬렉션에서 알고리즘 검출 : /수집/{컬렉션 ID가}/작업/최고 (GET) 어떤 알고리즘이 선택되었다 업데이트 : 내 이런 식으로 엔드 포인트를 설계 /수집/{collection-id}/tasks/selection/algorithms/{algorithm-id} 알고리즘에 대한 의견을 보내려면 /collection/{collection-id}/tasks/feedback/algorithms/{algorithm-id} 이 올바른 디자인? 아니면 유효한 REST 리소스가 없습니까? ("최선", "선택", "피드백"을 의미합니까?) – user3527821

+0

mapString 부분을 queryString에 넣는 것이 더 좋습니다 (고유 ID 제외). 그래서'/ collection/{collection-id}/tasks?best = true' 또는'/ collection/{collection-id}/tasks? filter = "best : true"'등 ... 다른 것들에 대해서 확신하지 못합니다 ...'a : b = 1 : n' a : b = 1 : 1 관계에 의해'/ a/bs/{b-id}'관계에 의해'/ a/bs/{b- {a-id}','/ b/{b-id}','/ ab/{ab-id}/a' 그리고'/ ab/{ab-id}/b'는 유효한 URL입니다. 다른 것, 가장 좋은 것, 타임 스탬프 이전의 것, ...은 queryString을 가져와야합니다. 이는 리소스 구조가 아니라 현재 쿼리에 관한 것이기 때문입니다. – inf3rno

+0

네, 감사합니다. – user3527821