微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

具有多个参数的MVC4 Web API Rest接口

我有一个名为LoginController的控制器,其Get方法的签名为:
public string Get(string Key,string Code,string UserID,string Password)

我希望能够通过类似于以下的调用调用它:

http://localhost:1234/api/Login/keyvalue/CodeValue/UserValue/PasswordValue

我不能让这个工作.如果我用以下方式调用呼叫:

http://localhost:1234/api/Login?Key=keyvalue&Code=CodeValueUserID=UserValue&Password=PasswordValue

通话成功.

我已经尝试将下面的路由添加到Global.asax

routes.MapHttpRoute(name: "Login",routeTemplate: "api/{controller}/{action}/{Key}/{Code}/{UserID}/{Password}",defaults: new { Key = UrlParameter.Optional,Code = UrlParameter.Optional,UserID = UrlParameter.Optional,Password = UrlParameter.Optional });

要么

routes.MapHttpRoute(name: "Login",routeTemplate: "api/{controller}/{Key}/{Code}/{UserID}/{Password}",Password = UrlParameter.Optional });

这些似乎不起作用.我哪里出错或者这是否可能?我能够在带有MVC3的RC版WebApi中做到这一点.

解决方法

您似乎错过了请求中的操作(/ api / Login / keyvalue / CodeValue / UserValue / PasswordValue).
如果您打算使用第一条路线,请尝试/ api / Login / Get / keyvalue / CodeValue / UserValue / PasswordValue.

如果您希望能够在未指定操作的情况下调用它并认为“获取”,则必须指定认操作:

defaults: new { Key = UrlParameter.Optional,Password = UrlParameter.Optional,Action = "Get" }

我已经在ASP.NET MVC 4项目(Visual Studio 2012 RC)中成功尝试了这个:

使用action创建LoginController:

public string Get(string Key,string Password)
{
    return Key + Code + UserID + Password;
}

并在Global.asax.cs中映射路由:

RouteTable.Routes.MapHttpRoute(null,"api/{controller}/{Key}/{Code}/{UserID}/{Password}",new { Key = UrlParameter.Optional,Action = "Get"});

如果它不适合您,可能是另一条路线正在捕捉请求或路线未被注册.

原文地址:https://www.jb51.cc/html/226175.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐