我使用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...
开头的操作,例如GetContact
或GetAllContacts
。该惯例仅适用于GET
,POST
,PUT
和DELETE
方法。
查看更多here
使用适当的动词为$http.post(***) - [HttpPost]
和$http.get(***) - [HttpGet]