2013-07-15 5 views
9

REST (또는 REST와 유사한) API를 현명하게 구조화하는 방법을 알지 못합니다.REST API 끝점을 이해하는 데 도움이 필요합니다.

뉴스 레터 이메일을 만들고 보내는 API를 상상해보십시오. 뉴스 레터 (제목, 본문 등), 메일 링리스트 (수신자 모음) 및 수신자 (이메일 주소 및 관련 데이터)와 같은 명사/리소스가있을 수 있습니다.

그래서 당신은 자원을 작성하는 PUT 사용할 수와 ID 반환 :

/newsletter/[id] 
/list/[id] 
/user/[id] 

당신은 사용하여 기존 자원을 업데이트 할 수 있습니다

/newsletter 
/list 
/user 

당신은 GET을 사용하여 자원에 대한 정보를 얻을 수를 패치 (또는 POST 여야합니까?) :

/newsletter/[id] 
/list/[id] 
/user/[id] 

DELETE를 사용하여 리소스를 삭제할 수 있습니다 :

/newsletter/[id] 
/list/[id] 
/user/[id] 
  1. 위의 올바른 있습니까?

  2. 뉴스 레터를 목록으로 보내고 목록에 사용자를 추가하는 것과 같은 작업에 적합한 종단점은 무엇입니까?

다음 내용이 의미가 있으며, RESTfull입니까?

/newsletter/[newsletter_id]/send/[mailinglist_id] 
/list/[list_id]/add/[user_id] 
/list/[list_id]/remove/[user_id] 

이 중복 또는 목록에 대한 list/[id]/add/[id]list/[id]/remove/[id] 엔드 포인트를 가질 인정되어, 경우에 사용자를 추가하거나 /list/[id]에서 패치를 통해 제거 할 수 있을까?

전자 메일 주소 또는 이름 같은 속성을 통해 사용자의 ID를 검색하는 방법은 무엇입니까? 또는 이름이나 작성일과 같은 식별자를 통해 목록을 가져 오는 중입니까?

답변

7

/list/[list_id]/add/[user_id]/list/[list_id]/remove[user_id]을 제외하고는 URL에 동사 (HTTP 방법의 목적)가 있기 때문에 꽤 많이 못 박았습니다.예를 들어,로 변경합니다

PUT (or POST) to /list/[list_id]/users/ for adding a user to the list 

및 검색을 위해

DELETE to /list/[list_id]/users/[user_id] 

를, 내가 좋아하는, 자원의 목록을 매개 변수화 된 URL과 함께 가고 싶어요 :이 동사

/newsletter/?name=dfjkhskdfh 
+0

"보내기"동사는 어떻습니까? – jeremiahs

1

있습니다 종종 혼란 스러울 때 :

  1. 엔터티를 생성하려면 그것은에 메일 링의 사실을 추가처럼, 편지를 보내는 수행 -

    POST /newsletters/[newsletter_id]/mailinglists/[mailinglist_id]/mailingfacts : PUT

이런 일들은 다음과 같은 방법으로 처리 할 수 ​​- 당신은 업데이트하려면 POST

  • 를 사용 수집

    /lists/[list_id]/[user_id]는 - 목록

    에 사용자를 추가합니다- 목록에서 사용자를 삭제합니다.

  • 관련 문제