我想制作一个通过4个参数传递的网络api.
I want to make a web api that is passed 4 parameters.
这是我的路线:
config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{email}/{firstname}/{lastname}/{source}" );这是方法签名
public string GetId(string email, string firstname, string lastname, string source)这是主叫网址
fakedomain/api/Contacts/GetId?email=user@domain&firstname=joe&lastname=shmoe&source=123我收到404错误.
如果我在路由配置中将每个参数设置为可选,并使用默认值设置每个参数,则会调用该参数.但是,每个参数都将使用默认值,而不是传递的值.
If I set each parameter to optional in the route config, and set up each argument with a default value it gets called. However, each argument gets the default value and not the passed value.
我感觉自己很亲密,我想念什么?
I feel like I am close, what am I missing?
推荐答案确保WebApiConfig.cs文件中具有默认的api路由设置.
Ensure you have default api route setting in WebApiConfig.cs file.
public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Web API configuration and services // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); config.Routes.MapHttpRoute( name: "ContactApi", routeTemplate: "api/{controller}/{email}/{firstname}/{lastname}/{source}" ); } } fakedomain/api/Contacts/GetId?email=user@domain&firstname=joe&lastname=shmoe&source=123注意:我用localhost替换了法域,它可以工作...(localhost/api/Contacts/GetId?email=user@domain& first = joe& lastname = shmoe& source = 123)
Note : I replaced fakedomain with localhost and it works... (localhost/api/Contacts/GetId?email=user@domain&firstname=joe&lastname=shmoe&source=123)
更多推荐
Web API 2中的多个参数
发布评论