实际上,我发现了大量关于这个话题的意见,但没有一个能说服我哪种方法是正确的。更具体地说,我有以下几个问题:
单数还是复数或两者都可以?
是否有正确和错误的方法?
标准和约定存在是有原因的,我不相信我会满足于“只是个人口味”的回答。难道没有任何指导方针或标准吗?没有完成Fieldings工作的权威机构吗?
应该返回什么IHttpActionResults?它们应该包含什么?
- Get - 返回Ok();
- Post - 返回Created();
- Put - 返回(Put? Ok?)
- Delete - 返回(Deleted? Ok?)
在Created(location)中返回什么?
假设控制器路由为“api/v1/model”,应该是
- '/{id}'?
- 'api/v1/model/{id}'?
- 'http://www.mywebapi.com/api/v1/model/{id}'?
我提出这些问题是因为我经常遇到如何最好地实现API的冲突。
Created()
方法中的location
参数应该是对当前“项”(item)的引用,对吧?我认为 2 和 3 之间的区别就很明显了。#2 假设 API 消费者本身将提供 URL 的右侧部分,而 #3 - 将返回整个和完整的 URL。location
参数只是一个普通的字符串,据我所知,没有任何“.NET 自动完成路由到 URL 转换工具”的事情发生。 - Marcus