这是我的路线:
config.Routes.MapHttpRoute(
name: "CreateUser",
routeTemplate: "api/User/CreateUser",
defaults: new { controller = "User", action = "CreateUser" }
);
这是端点:
[HttpPost]
public async Task<User> CreateUser([FromBody] User user)
{
db.DirectUsers.Add(user);
await db.SaveChangesAsync();
return user;
}
我发送此帖子数据:
{
"UserId" : 1
"Name" : "Nick"
"TwitterHandel" : "x"
}
收件人:http://localhost:56792/api/User/CreateUser
但是我得到了404
答案 0 :(得分:0)
理想情况下,您不需要为每个操作方法添加路由。只有一个路由配置足以支持普通API。
如果您需要高级路由,可以查看Web API 2的属性路由。
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
// This alone is enough.
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new {id = RouteParameter.Optional});
...
}
此外,您不应通过http://.../api/User/CreateUser
访问。它实际上违背了使用Web API的目的,其中操作方法映射到HTTP Verbs。
所以你只需要HTTPOST到这个URL来创建一个新用户。
答案 1 :(得分:-1)
试试这个:
config.Routes.MapHttpRoute(
name: "CreateUser",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { controller = "User", action = "CreateUser", id = RouteParameter.Optional }
);