为了账号安全,请及时绑定邮箱和手机立即绑定

Web API控制器中的多个HttpPost方法

Web API控制器中的多个HttpPost方法

30秒到达战场 2019-08-26 14:29:32
Web API控制器中的多个HttpPost方法我开始使用MVC4 Web API项目,我有多种HttpPost方法的控制器。控制器如下所示:调节器public class VTRoutingController : ApiController{     [HttpPost]     public MyResult Route(MyRequestTemplate routingRequestTemplate)     {         return null;     }     [HttpPost]     public MyResult TSPRoute(MyRequestTemplate routingRequestTemplate)     {         return null;     }}这里MyRequestTemplate表示负责处理通过请求的Json的模板类。错误:当我让使用招为请求http://localhost:52370/api/VTRouting/TSPRoute或http://localhost:52370/api/VTRouting/Route 我得到一个错误:找到了与请求匹配的多个操作如果我删除上述方法之一,它工作正常。Global.asax中我已经尝试修改默认路由表global.asax,但我仍然收到错误,我认为我在global.asax中定义路由时遇到问题。这是我在global.asax中所做的。public static void RegisterRoutes(RouteCollection routes){     routes.MapHttpRoute(         name: "MyTSPRoute",         routeTemplate: "api/VTRouting/TSPRoute",         defaults: new { }     );     routes.MapHttpRoute(         name: "MyRoute",         routeTemplate: "api/VTRouting/Route",         defaults: new { action="Route" }     );}我正在使用POST在Fiddler中发出请求,在RequestBody中为MyRequestTemplate传递json。
查看完整描述

3 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

对您的问题更好的解决方案是使用Route,它允许您通过注释指定方法的路径:

[RoutePrefix("api/VTRouting")]public class VTRoutingController : ApiController{
    [HttpPost]
    [Route("Route")]
    public MyResult Route(MyRequestTemplate routingRequestTemplate)
    {
        return null;
    }

    [HttpPost]
    [Route("TSPRoute")]
    public MyResult TSPRoute(MyRequestTemplate routingRequestTemplate)
    {
        return null;
    }}


查看完整回答
反对 回复 2019-08-26
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

使用:


routes.MapHttpRoute(

    name: "DefaultApi",

    routeTemplate: "api/{controller}/{action}/{id}",

    defaults: new { id = RouteParameter.Optional }

);

它不再是RESTful方法,但您现在可以通过名称调用您的操作(而不是让Web API根据动词自动为您确定一个),如下所示:


[POST] /api/VTRouting/TSPRoute


[POST] /api/VTRouting/Route

与流行的看法相反,这种方法没有任何问题,也没有滥用Web API。您仍然可以利用Web API的所有强大功能(委派处理程序,内容协商,mediatype格式等) - 您只是放弃了RESTful方法。


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 1277 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信