WebAPI2中正确的RESTful实现是什么?

时间:2016-08-31 08:11:23

标签: c# .net rest asp.net-web-api

基本上我发现了很多关于这个主题的意见,但没有一个能说服我什么是正确的。更具体地说,我有以下问题:

单数或复数或两者

  • 是否有正确和错误的方式?

    标准和惯例存在是有原因的,我不相信我会满足于此 - 这只是一个品味问题。没有任何指南或标准吗?没有权力完成Fieldings的工作吗?

返回什么IHttpActionResults?它们应包含什么?

  • 获取 - 返回Ok();
  • 返回后创建();
  • Put - return(Put?Ok?)
  • 删除 - 返回(已删除?确定?)

在Created(位置)中返回什么内容?

假设Controller路由是'api / v1 / model',它应该是

我问这些问题是因为我经常遇到有关如何最好地实施API的冲突。

1 个答案:

答案 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等使用的内容。