c# - WebApi 中的默认 HTTP 动词是什么?获取还是发布?

标签 c# .net http asp.net-web-api

只是古玩。我正在查看 Internet 上的一个 Web 项目。

代码流程是这样的:

[RoutePrefix("/person")]
public class PersonController : ApiController
{

    //....
    [Route("/register")]
    public IHttpACtionResult RegisterPerson(PersonDto personDto)
    {
        //....
    }
    //....
}

你注意到上面的代码了吗?没有指定 [HttpGet()][HttpPost()]。然而,上面的代码对于 GET 调用失败,但对于 POST 调用有效。

知道如何解析此方法的 HTTP-Verb 吗?

注意:我知道如果方法名以GETPOST 开头,则相应地通过HTTPGet 调用该方法HTTP 邮寄。但是这里的方法名以Register...开头。

知道这是如何工作的吗?

最佳答案

如果方法名称不匹配任何 HTTPVerb,则默认为 [HTTPPost]。

Action 选择通过 ReflectedHttpActionDescriptor 类的 GetSupportedHttpMethods() 发生。

请引用以下链接中的代码: https://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Web.Http/Controllers/ReflectedHttpActionDescriptor.cs

 if (supportedHttpMethods.Count == 0)
            {
                // Use POST as the default HttpMethod
                supportedHttpMethods.Add(HttpMethod.Post);
            }

关于c# - WebApi 中的默认 HTTP 动词是什么?获取还是发布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35797726/

相关文章:

.net - 在没有 Web 服务器的情况下使用 SSL 通过 TCP/IP 套接字进行客户端/服务器通信

c++ - 异步 Wt::Http::Client 响应和请求匹配

react-native - 如何在 React Native Fetch 中将 curl 数据二进制转换为 HTTP 正文?

c# - 用于下载大文件的 Asmx Web 服务

c# - 更改默认 Windows 键盘快捷键

c# - Asp.net Button 组件在 Twitter-Bootstrap 主题下不起作用

c# - 如何从 Azure 角色内部检测当前订阅 ID?

google-chrome - 打印 http block 及其到达时间

c# - 如何确定一个类型是否实现了特定的泛型接口(interface)类型

c# - 扩展成员(member)提供者