Ian*_*Ian 1 c# asp.net-web-api2
是否有Web API 2中使用的约定列表?
以这两种方法为例.两者都有效,都没有装饰属性.
IHttpActionResult GetMyModel(int id)
IEnumerable<MyModel> GetAllMyModels()
Run Code Online (Sandbox Code Playgroud)
Get响应路由"{controller}/{action}/{id}",所以我认为GetAllMyModels因为它的返回类型而起作用?还是GetAll前缀?
还有其他惯例吗?
与此相关的,为什么会GetAllMyModels返回一个枚举,而GetMyModel返回MyModel的IHttpActionResult?如果我回来IHttpActionResult从GetAllMyModels?
谢谢
如果方法的名称以定义的HTTP方法开头,则在没有特定属性定义的情况下,它将映射到该方法.
private static Collection<HttpMethod> GetSupportedHttpMethods()
Run Code Online (Sandbox Code Playgroud)
在System.Web.Http.Controllers.ReflectedHttpActionDescriptor使用中_supportedHttpMethodsByConvention
private static readonly HttpMethod[] _supportedHttpMethodsByConvention =
{
HttpMethod.Get,
HttpMethod.Post,
HttpMethod.Put,
HttpMethod.Delete,
HttpMethod.Head,
HttpMethod.Options,
new HttpMethod("PATCH")
};
Run Code Online (Sandbox Code Playgroud)
<剪断/>
// Get HttpMethod from method name convention
for (int i = 0; i < _supportedHttpMethodsByConvention.Length; i++)
{
if (methodInfo.Name.StartsWith(
_supportedHttpMethodsByConvention[i].Method,
StringComparison.OrdinalIgnoreCase))
{
supportedHttpMethods.Add(_supportedHttpMethodsByConvention[i]);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,如果没有定义其他内容,POST是默认的HTTP方法.
您可以通过浏览Web API 2源代码来了解正在发生的事情.
| 归档时间: |
|
| 查看次数: |
2330 次 |
| 最近记录: |