【发布时间】:2016-08-31 21:53:31
【问题描述】:
基本上我发现了关于这个话题的大量意见,但没有一个能说服我什么是正确的。更具体地说,我有以下问题:
单数或复数或两者兼有
-
还有正确和错误的方式吗?
标准和惯例的存在是有原因的,我不相信我会满足于 - 这只是品味问题。没有任何指导方针或标准吗?没有权限完成菲尔丁的工作?
要返回什么 IHttpActionResults?它们应该包含什么?
- 获取 - 返回 Ok();
- 后 - 返回 Created();
- Put - 返回(Put?OK?)
- 删除 - 返回(已删除?好的?)
在 Created(location) 中返回什么?
假设Controller路由是'api/v1/model',应该是
- '/{id}'?
- 'api/v1/model/{id}'?
- 'http://www.mywebapi.com/api/v1/model/{id}'?
我问这些问题是因为我经常在如何最好地实现 API 方面遇到冲突。
【问题讨论】:
-
+1 这是个好问题。您能否详细说明当您说“假设控制器路由是'api/v1/model',应该是”..etc 控制器路由从域(www.mywebapi.com/)开始时的意思,所以有什么区别在选项 nr 2 和 nr 3 之间?
-
Created()方法中的location参数应该是对当前item的引用吧?我认为 2 和 3 之间的区别应该很明显。 #2 将假定 API 使用者本身将提供 URL 的正确部分,而 #3 - 将返回整个和完整的 URL。location参数只是一个普通字符串,据我所知,没有 ".NET-auto-complete-route-to-url-conversion-thingie" 发生。 -
好的,现在我明白了。当您阅读问题时,“Created(location)”行代表自己。您应该删除换行符或重写它们。不过,这是个好问题,如果 api 是从不同的域使用的,那么我会返回完整的 URL。
标签: c# .net rest asp.net-web-api