Web API 2中的多个参数 [英] Multiple parameters in a web api 2 get
问题描述
我想制作一个通过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)
这是主叫网址
http://fakedomain.com/api/Contacts/GetId?email=user@domain.com&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}"
);
}
}
http://fakedomain.com/api/Contacts/GetId?email=user@domain.com&firstname=joe&lastname=shmoe&source=123
注意:我用localhost替换了法域,它可以工作...(localhost/api/Contacts/GetId?email=user@domain.com& first = joe& lastname = shmoe& source = 123)
Note : I replaced fakedomain with localhost and it works... (localhost/api/Contacts/GetId?email=user@domain.com&firstname=joe&lastname=shmoe&source=123)
这篇关于Web API 2中的多个参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!