Шаблоны REST URI для операций запросов и команд

У нас есть приложение, которое разделено на две части:

  1. Администратор -Место изменения данных
  2. Публичный -Где читаются данные

Я рассматриваю создание REST API для обеспечения этой функциональности. Очень легко увидеть, как могут быть представлены операции CRUD, но я не уверен в конкретных операциях (командах )на отдельном ресурсе. Например, чтобы «Опубликовать» Project, мы отправляем «PublishCommand». Мы не помещаем полный Projectобратно на сервер с его свойством Published, установленным на true.

В аналогичной заметке я немного смущен тем, как мы должны представлять более сложные операции запросов к ресурсам, не классифицируя их как службу типа RPC.

Ниже я перечислил шаблоны URI для моего ресурса Project. Я на правильном пути для создания действительно RESTful API?

ADMIN API
---------

// Project Resources
GET /projects -- get all projects
POST /projects -- create a new project

// Project Resource
GET /projects/10 -- get project with id 10
PUT /projects/10 -- update project with id 10
DELETE /projects/10 -- delete project with id 10

// Project Resource Operations
POST: /projects/10/publish -- publish project with id 10
POST: /projects/10/unpublish -- unpublish project with id 10
POST: /projects/10/setposition/2 -- move to position 2 in projects list

// Project Sub resources (identity is local to project)
POST: /projects/10/media -- adds media to project with id 10
PUT: /projects/10/media/5 -- updates media id 5 for project id 10
DELETE: /projects/10/media/5 -- deletes media id 5 from project id 10

PUBLIC API
----------

GET: /projects -- gets all projects (with default limit e.g. first 10)
GET: /projects?skip=10&take=10 -- gets projects 11 to 20
GET: /projects/tagged/rest OR /taggedprojects/rest -- gets projects tagged with "REST"
GET: /projects?orderbydesc=publishdate OR /latestprojects -- gets latest projects

GET: /projects/10 -- gets project with id 10
6
задан Ben Foster 18 July 2012 в 13:03
поделиться