Ben*_*ter 6 rest asp.net-web-api
我们有一个应用程序分为两部分:
我正在寻找创建REST API来提供此功能.很容易看出如何表示CRUD操作,但我不确定单个资源上的特定操作(命令).例如,为了"发布",Project我们发送一个"PublishCommand".我们不会将Project其Published属性设置为的完全返回到服务器true.
在类似的说明中,我对如何在不被归类为RPC类型服务的情况下代表更高级的资源查询操作感到困惑.
下面我列出了我的Project资源的URI模板.我是否正在创建真正的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
Run Code Online (Sandbox Code Playgroud)
我不认为REST仅用于表示CRUD操作.你的界面看起来很好,我相信你走的正确.
有关DDD和REST的在线讨论:RESTful SOA或域驱动设计 - 妥协?由沃恩弗农.
更新以包含我在下面做出的评论:
您可以使用GET查询yor读取模型.要改变您的域,您可以PUT或POST到代表命令的资源.这将提供除CRUD之外的域模型的丰富性,并仍然使用HTTP的固有语义.
| 归档时间: |
|
| 查看次数: |
1081 次 |
| 最近记录: |