如何在一个控制器中调用三个get方法?
How to call three get methods in one controller?
您好,我正在开发 webapi 应用程序,我在一个控制器中有三个 GET 方法。我可以调用 2 种方法,但无法调用第三种方法。
以下是我可以调用的方法。
[HttpGet]
[Route("me")]
public HttpResponseMessage me()
{
return Request.CreateResponse(HttpStatusCode.OK, "Get me");
}
URL:http://localhost:22045/api/user/me
[HttpGet]
public HttpResponseMessage getUser(int id)
{
return Request.CreateResponse(HttpStatusCode.OK, "Get user");
}
URL: http://localhost:22045/api/user/1
我不能叫低于一个。
[Route("user/{role}")]
public HttpResponseMessage Get(string role)
{
return Request.CreateResponse(HttpStatusCode.OK, "Get me on role");
}
我想这样称呼它
http://localhost:22045/api/user/OptionalRoleParameter
我可以在这里得到一些帮助吗?任何帮助将不胜感激。
Optional route parameter as string
[Route("user/{role?}")]
public HttpResponseMessage Get(string role)
{
return Request.CreateResponse(HttpStatusCode.OK, "Get me on role");
}
您不能将 string
作为可选参数,因为它在 Web API 中不支持作为可为 null 的约束,请参阅此处了解更多信息, Route Constraints in Web API
使用具有路由约束的属性路由应该有助于充分区分路由以避免冲突
首先确保启用属性路由。
config.MapHttpAttributeRoutes();
然后确保控制器具有必要的属性
[RoutePrefix("api/user")]
public class UsersController : ApiController {
//GET api/user/me
[HttpGet]
[Route("me")]
public HttpResponseMessage me() {
return Request.CreateResponse(HttpStatusCode.OK, "Get me");
}
//GET api/user/1
[HttpGet]
[Route("{id:int")] // NOTE the parameter constraint
public HttpResponseMessage getUser(int id) {
return Request.CreateResponse(HttpStatusCode.OK, "Get user");
}
//GET api/user
//GET api/user/OptionalRoleHere
[HttpGet]
[Route("{role?}")] //NOTE the question mark used to identify optional parameter
public HttpResponseMessage Get(string role = null) {
return Request.CreateResponse(HttpStatusCode.OK, "Get me on role");
}
}
来源:Attribute Routing in ASP.NET Web API 2 : Route Constraints
您好,我正在开发 webapi 应用程序,我在一个控制器中有三个 GET 方法。我可以调用 2 种方法,但无法调用第三种方法。
以下是我可以调用的方法。
[HttpGet]
[Route("me")]
public HttpResponseMessage me()
{
return Request.CreateResponse(HttpStatusCode.OK, "Get me");
}
URL:http://localhost:22045/api/user/me
[HttpGet]
public HttpResponseMessage getUser(int id)
{
return Request.CreateResponse(HttpStatusCode.OK, "Get user");
}
URL: http://localhost:22045/api/user/1
我不能叫低于一个。
[Route("user/{role}")]
public HttpResponseMessage Get(string role)
{
return Request.CreateResponse(HttpStatusCode.OK, "Get me on role");
}
我想这样称呼它
http://localhost:22045/api/user/OptionalRoleParameter
我可以在这里得到一些帮助吗?任何帮助将不胜感激。
Optional route parameter as
string
[Route("user/{role?}")]
public HttpResponseMessage Get(string role)
{
return Request.CreateResponse(HttpStatusCode.OK, "Get me on role");
}
您不能将 string
作为可选参数,因为它在 Web API 中不支持作为可为 null 的约束,请参阅此处了解更多信息, Route Constraints in Web API
使用具有路由约束的属性路由应该有助于充分区分路由以避免冲突
首先确保启用属性路由。
config.MapHttpAttributeRoutes();
然后确保控制器具有必要的属性
[RoutePrefix("api/user")]
public class UsersController : ApiController {
//GET api/user/me
[HttpGet]
[Route("me")]
public HttpResponseMessage me() {
return Request.CreateResponse(HttpStatusCode.OK, "Get me");
}
//GET api/user/1
[HttpGet]
[Route("{id:int")] // NOTE the parameter constraint
public HttpResponseMessage getUser(int id) {
return Request.CreateResponse(HttpStatusCode.OK, "Get user");
}
//GET api/user
//GET api/user/OptionalRoleHere
[HttpGet]
[Route("{role?}")] //NOTE the question mark used to identify optional parameter
public HttpResponseMessage Get(string role = null) {
return Request.CreateResponse(HttpStatusCode.OK, "Get me on role");
}
}
来源:Attribute Routing in ASP.NET Web API 2 : Route Constraints