2012-07-05 3 views
5

Я пытаюсь создать API для двух ресурсов, один с пользователями, а другой с помощью фильмов. Оба ресурса имеют ассоциации - у пользователя будет несколько фильмов, а в фильме будет несколько пользователей. По-видимому, я бы дизайн моего API что-то вроде этого:Дизайн RESTful API с ассоциациями

/api/users/ 
/api/users/:id 
/api/users/:id/movies 

/api/movies/ 
/api/movies/:id 
/api/movies/:id/users 

Но вот проблема: Я также использую Backbone.js на стороне клиента для извлечения данных API. Если Если я создаю коллекцию в

/api/users/:id/movies 

, то это будет хорошо работать для запросов GET, но POST и PUT запросы, казалось бы затем быть направлены на:

/api/users/:id/movies/:id 

Но, по-видимому, было бы лучше если оно было отправлено на адрес

/api/movies/:id 

вместо этого. Это верно? Как люди обычно имеют дело с ассоциациями RestFul?

ответ

1

Не уверен, что вы подразумеваете под «запросами POST и PUT, которые, казалось бы, были бы направлены на ...». Может ли Backbone.js автоматически добавлять параметры к URL-адресам? Если это так, вы должны посмотреть, как настроить его так, чтобы он этого не делал, потому что он не будет использоваться с REST API. Ссылки, предоставляемые REST API, должны быть полными, их не нужно добавлять и удалять.

Наконец, если вы хотите связать фильм с пользователем. Вы отправите фильм (или только его идентификатор) для:

/api/users/:id/movies 
+0

Спасибо Laurent. Магистраль добавляет идентификатор к URL-адресу POST или PUT новую модель к коллекции, к которой она принадлежит. Другими словами, коллекция будет иметь URL/api/users/1/movies, а POST будет автоматически использовать URL/api/users/1/movies /: id. Для меня кажется более уместным, чтобы URL-адрес POST был/api/movies /: id, но, возможно, я ошибаюсь. На стороне сервера я мог бы, возможно, обрабатывать POST в/api/users/1/movies /: id. – bento

-2

Как я понимаю, вы пытаетесь выяснить что-то читаемое и стандартный способ создания своего адреса REST службы. Реальная история заключается в том, что URL-адрес службы полностью отличается от дизайна API.

URL службы может быть выглядит как:

/апи/getMovies/идентификатор пользователя: участие с запросом GET

/апи/updateMovieList/идентификатор пользователя: участие с поста

это более интуитивным и самостоятельной выразительный.

This site имеет хороший ресурс для прохождения.

+0

Кажется, вам нужно обновить этот ответ, – Forhad

Смежные вопросы