基本上我发现了关于这个主题的废话,但没有一个能说服我什么是正确的.更具体地说,我有以下问题:
单数或复数或两者兼而有之
>甚至有正确和错误的方式吗?
标准和惯例存在是有原因的,我不相信我会满足 – 这只是一个品味问题.没有任何指南或标准吗?没有权力完成Fieldings工作?
IHttpActionResults返回什么?它们应该包含什么?
>获取 – 返回Ok();
> Post – return Created();
> Put – return(Put?Ok?)
>删除 – 返回(删除?好吗?)
在Created(位置)返回什么?
假设Controller路由是’api / v1 / model’,它应该是
>’/ {id}’?
>’api / v1 / model / {id}’?
>’http://www.mywebapi.com/api/v1/model/ {id}’?
我问这些问题是因为我经常遇到如何最好地实现API的冲突.
最佳答案 问:单数或复数或两者兼而有之
绝不使用两者.使用任何一个.使用名词而不是动词.
不要使用动词:
/getAllCars
/createNewCar
/deleteAllRedCars
不要混淆单数和复数名词.保持简单,只使用复数名词来表示所有资源.
/cars instead of /car
/users instead of /user
/products instead of /product
现在,如果您在下面看到,它将更有意义:
GET /tickets – Retrieves a list of tickets
GET /tickets/12 – Retrieves a specific ticket
POST /tickets – Creates a new ticket
PUT /tickets/12 – Updates ticket #12
PATCH /tickets/12 – Partially updates ticket #12
DELETE /tickets/12 – Deletes ticket #12
如果资源与另一个资源相关,则使用子资源.
GET /cars/711/drivers/ Returns a list of drivers for car 711
问:在Created(位置)返回什么?
200 OK – 响应成功的GET,PUT,PATCH或DELETE.也可以用于不会导致创建的POST.
201 Created – 对POST的响应,导致创建.应该与Location header结合指向新资源的位置
提供上一个问题的清晰度,我会相应地更新我的答案.
REST没有明确的标准,每个人都根据自己的需要使用最佳实践.但是,我建议你从apigee.com浏览这个PDF,其中列出了REST API的最佳实践以及每个大型播放器,即Facebook,Twitter等使用的内容.