2014-10-17 1 views
0

알다시피, RESTful 가이드 라인에 따르면 모든 URL은 단일 리소스 또는 리소스 그룹을 나타내야하며 액션을 인수로 사용해야합니다. 다음, 이제RESTful : 동일한 URL에서 다른 작업을 수행하는 방법은 무엇입니까?

POST /users HTTP/1.1 
Host: www.example.com 

username=<username>&password=<password>&email=<email>&age=<age> 

나는 사용자 등록을 취소하려는 경우 :

우리가 '사용자'라는 이름의 자원 그룹이 가정하고,
그래서 API가 될 수 나는 또 하나의 사용자를 등록 할 등록 해제 API의 :

방법은 여전히 ​​POST 것, URI가 계속 될 것입니다
/users,
인수 할 수 username=<username>&password=<password>&reason=<reason>

이 상황에서 두 개의 API는 서로 다른 인수를 사용하여 동일한 URL과 메소드를 공유하므로 좋은 디자인이 아닙니다.

그래서 질문 :
서버 설계자가 동일한 리소스에서 두 가지 다른 작업을 쉽게 구분할 수있게하려면이 상황에 대한 좋은 설계는 무엇입니까?

편집
정말 팀의 제안 @ 감사하고 지금은 내 질문이 더 일반적인되고 싶어 :
이 자원에 대한 여러 가지 업데이트 작업, 그리고 행동의 각 인자의 다른 조합을 취하면, RESTful api를 지금 어떻게해야합니까? 고마워. :)

답변

2

POST (만들기) 요청을 작성하여 사용자를 등록하는 경우 반대 등록 취소는 DELETE 요청이어야합니다.

POST /users HTTP/1.1 
Host: www.example.com 

username=<username>&password=<password>&email=<email>&age=<age> 

등록 취소 등록


당신은 요청 본문

DELETE /users HTTP/1.1 
Host: www.example.com 

username=<username>&password=<password>&reason=<reason> 

또는 확인에서 사용자 이름과 (검증) 암호로 /users에 요청을 선택할 수 있습니다 /users/<username>에 대한 요청은 비밀번호 (확인 용)와 rea 요청 몸에있는 아들 (목적에 관계없이)

DELETE /users/<username> HTTP/1.1 
Host: www.example.com 

&password=<password>&reason=<reason> 

나는 후자가 더 좋다고 생각한다.

+0

고마워요! 제 편집을 확인해주세요. – dastan

+0

어떻게 작동하는지는 백엔드에서 무엇을 사용 하느냐에 달려 있지만, 그 질문은 완전히 다른 문제라고 생각합니다 :-) –

+0

'백엔드에 사용하는 것', 더 설명 할 수 있습니까? 미안하지만 무슨 뜻인지 잘 모르겠다. – dastan

관련 문제