基本上我发现了很多关于这个主题的意见,但没有一个能说服我什么是正确的。更具体地说,我有以下问题:
单数或复数或两者
是否有正确和错误的方式?
标准和惯例存在是有原因的,我不相信我会满足于此 - 这只是一个品味问题。没有任何指南或标准吗?没有权力完成Fieldings的工作吗?
返回什么IHttpActionResults?它们应包含什么?
在Created(位置)中返回什么内容?
假设Controller路由是'api / v1 / model',它应该是
我问这些问题是因为我经常遇到有关如何最好地实施API的冲突。
答案 0 :(得分:2)
问: 单数或复数或两者
绝不使用两者。使用任何一个。使用名词而不是动词。
不要使用动词:
/ getAllCars
/ createNewCar
/ deleteAllRedCars
不要混淆单数和复数名词。保持简单,只使用复数名词。
/cars instead of /car
/users instead of /user
/products instead of /product
现在,如果您在下面看到它,那将更有意义:
GET / tickets - 检索票证列表
GET / tickets / 12 - 检索特定的票据
POST / ticket - 创建新票证 PUT / ticket / 12 - 更新票#12
PATCH / tickets / 12 - 部分更新票#12
DELETE / tickets / 12 - 删除门票#12
如果资源与其他资源相关,则使用子资源。
GET / cars / 711 / drivers /返回汽车711的驱动程序列表
问: 在Created(位置)中返回什么内容?
200 OK - 响应成功的GET,PUT,PATCH或DELETE。也可以用于不会导致创建的POST。
201 Created - 对导致创建的POST的响应。应该与指向新资源位置的Location header结合使用
明确上一个问题,我会相应地更新我的答案。
没有明确的REST标准,每个人都根据自己的需要使用最佳实践。但是我建议你从apigee.com上查看这个PDF,其中列出了REST API的最佳实践以及每个大型播放器,即Facebook,Twitter等使用的内容。