Итак, я много читал о дизайне RESTfull - специально для работы с ресурсами.HasMany RESTfull (или анти-RESTfull) дизайн?
Принимая канонический пример пользователей, Сообщений и Комментарии, с отношениями, как:
Пользователи --- (hasMany) ---> Сообщение --- (hasMany) ---> Комментарий
можно сначала думать, чтобы выставить что-то вроде:
GET /users GET /posts GET /comments
POST /users POST /posts POST /comments
GET /users/id GET /posts/id GET /comments/id
PUT /users/id PUT /posts/id PUT /comments/id
DELETE /users/id DELETE /posts/id DELETE /comments/id
Но, скажем, я хочу, чтобы все Комментарии определенного сообщение сделанные конкретным пользователем . Я должен был бы сделать что-то вроде:
GET /users/id
> someUser
> var postIds = someUser.posts()
GET /posts?id=<postIds[0]>&id=<postIds[1]>&...
> somePosts
> **application user inspects posts to see which one they care about**
> var postOfInterest = somePosts[x];
> var postId = postOfInterest.id;
GET /comments?id=postId
> someComments (finally)
Предположим, что я забочусь только о сообщение или комментарий в контексте его владелицей. Предположим, что другой структурирование ресурса, которое может быть более естественным (или не могут?):
GET /users
POST /users
GET /users/id
PUT /users/id
DELETE /users/id
GET /users/id/posts
POST /users/id/posts
GET /users/id/posts/id
PUT /users/id/posts/id
DELETE /users/id/posts/id
GET /users/id/posts/id/comments
POST /users/id/posts/id/comments
GET /users/id/posts/id/comments/id
GET /users/id/posts/id/comments/id
GET /users/id/posts/id/comments/id
Что для меня, это, вероятно, лучшее представление о том, что эти ресурсы. Тогда все, что мне нужно:
GET /users/id/posts
> somePosts
> **application user inspects posts to see which one they care about**
> var postOfInterest = somePosts[x];
> var postId = postOfInterest.id;
GET /users/id/posts/postId/comments
> someComments
Это как раз больше похоже навигации файловой системы, чем предыдущий метод, - но я не знаю, если его RESTfull вообще (возможно, это то, что REST пытается избавиться от), потому что для доступа к Комментарии ресурс, мне нужно знать, какой Пользователь и который Должность принадлежит. Но первый требует 3 запросов, а для последнего требуется всего 2.
Мысли?
Возможный дубликат [Как я должен работать с иерархиями объектов в RESTful API?] (http://stackoverflow.com/questions/3867344/ how-should-i-deal-with-object-hierarchies-in-a-rest-api) – EkoostikMartin
ссылается на этот http://stackoverflow.com/questions/19033462/simple-rest-url-scheme. Посмотрите, помогает ли это. аналогичный вопрос – Satish