使用$ http.post时HTTP 405无效方法(HTTP动词)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用$ http.post时HTTP 405无效方法(HTTP动词)相关的知识,希望对你有一定的参考价值。

我使用web api来做一些奇怪的行为。我正在使用属性路由,并在服务器上发布帖子。控制器:

    [Route("names")]
    public ResultDTO SaveData(SomeDTO dto)
    {
       //somecode
        ...
    } 

而我正在呼唤它

     $http.post('/api/mycontroller/names', $scope.model.dto).success(function 
      (data) { ...

它正在发挥作用。但是,如果我重命名我的方法

    [Route("names")]
    public ResultDTO GetData(SomeDTO dto)
    {
       //somecode
        ...
    } 

它没有工作,我得到HTTP 405错误由于使用了无效的方法(HTTP动词)来尝试访问,因此无法显示您要查找的页面,

但是,如果我将$ http.post的调用更改为$ http.get,它就可以正常工作

显然,如果我发布数据,我不会将我的方法命名为GetSomeMethod,但我很好奇,不应该定义路由

   [Route("names")]

使用$ http.post,无论我如何实际调用将处理该帖子的方法?更具体地说,如果我将我的方法命名为GetSomething,为什么$ http.post将无法工作,但是如果我将方法名称更改为,例如,GotSomething或SaveSomething?

答案

尝试添加路由属性

[HttpPost]

然后你可以根据自己的意愿命名你的行动。

Web API查看HTTP方法,然后查找名称以该HTTP方法名称开头的操作。例如,对于GET请求,Web API会查找以Get...开头的操作,例如GetContactGetAllContacts。该惯例仅适用于GETPOSTPUTDELETE方法。

查看更多here

另一答案

使用适当的动词为$http.post(***) - [HttpPost]$http.get(***) - [HttpGet]

以上是关于使用$ http.post时HTTP 405无效方法(HTTP动词)的主要内容,如果未能解决你的问题,请参考以下文章

$http.post 的 Web API 405 错误

AngularJS $http.POST 方法 405 错误

CORS 问题? - 预检响应包含无效的 HTTP 状态代码 405

从 Angular 向 Asp.net 发送 post 请求时出现错误 405

通过 Angular JS $http.post 使用 slim 框架时出现 404 无效的 http 状态代码

XMLHttpRequest 无法加载。预检响应具有无效的 HTTP 状态代码 405