如何在 ASP.NET MVC API 中使用查询字符串参数
How to use Query String parameters in the ASP.NET MVC API
[RoutePrefix("web/api")]
public class UsersController : BaseController
{
[Route("users")]
[HttpGet]
public Response<List<UserDTO>> Get(string q, string ex)
我正在尝试让 get 函数响应:
web/api/users?q=sd&ex=1
但是不起作用?
试试这个:
`[RoutePrefix("web/api")]
public class UsersController : BaseController
{
[Route("users/{q}/{ex}")]
[HttpGet]
public Response<List<UserDTO>> Get(string q, string ex)`
然后像这样调用 api:web/api/users/text1/text2
您可以添加自定义路线
config.Routes.MapHttpRoute(
name: "NameOfRoute",
routeTemplate: "web/{controller}/{action}?q={q}&ex={ex}",
defaults: new { controller = "controller-name", action = "action-name",
q = RouteParameter.Optional, ex= RouteParameter.Optional }
);
我猜你的错误是你在控制器 class 上使用 RoutePrefix
而在方法上使用 Route
。
如果你想像你展示的那样调用 url 你应该这样定义你的控制器:
[RoutePrefix("web/api/users")]
public class UsersController : BaseController
{
[HttpGet]
public Response<List<UserDTO>> Get(string q, string ex)
首先,为了能够在同一个控制器中拥有多个 GET
方法,您必须添加您的自定义路由:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
然后,在您的控制器中,您需要将参数标记为 FromUri
以告知该方法期望来自 URI 的参数。这样,您就可以按以下方式调用该方法:
/web/api/users/Get?q="your string1"&ex="ex"
public Response<List<UserDTO>> Get([FromUri]string q, [FromUri]string ex)
如果这是唯一的GET
方法,您可以跳过映射自定义路由的部分。
希望对您有所帮助。
祝你好运!
[RoutePrefix("web/api")]
public class UsersController : BaseController
{
[Route("users")]
[HttpGet]
public Response<List<UserDTO>> Get(string q, string ex)
很抱歉打扰大家,但这完全可以。我做错的是我在 MVC 项目中有一些控制器指向相同的 url。结果我得到了 404。
但是非常感谢大家。
[RoutePrefix("web/api")]
public class UsersController : BaseController
{
[Route("users")]
[HttpGet]
public Response<List<UserDTO>> Get(string q, string ex)
我正在尝试让 get 函数响应: web/api/users?q=sd&ex=1
但是不起作用?
试试这个:
`[RoutePrefix("web/api")]
public class UsersController : BaseController
{
[Route("users/{q}/{ex}")]
[HttpGet]
public Response<List<UserDTO>> Get(string q, string ex)`
然后像这样调用 api:web/api/users/text1/text2
您可以添加自定义路线
config.Routes.MapHttpRoute(
name: "NameOfRoute",
routeTemplate: "web/{controller}/{action}?q={q}&ex={ex}",
defaults: new { controller = "controller-name", action = "action-name",
q = RouteParameter.Optional, ex= RouteParameter.Optional }
);
我猜你的错误是你在控制器 class 上使用 RoutePrefix
而在方法上使用 Route
。
如果你想像你展示的那样调用 url 你应该这样定义你的控制器:
[RoutePrefix("web/api/users")]
public class UsersController : BaseController
{
[HttpGet]
public Response<List<UserDTO>> Get(string q, string ex)
首先,为了能够在同一个控制器中拥有多个 GET
方法,您必须添加您的自定义路由:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
然后,在您的控制器中,您需要将参数标记为 FromUri
以告知该方法期望来自 URI 的参数。这样,您就可以按以下方式调用该方法:
/web/api/users/Get?q="your string1"&ex="ex"
public Response<List<UserDTO>> Get([FromUri]string q, [FromUri]string ex)
如果这是唯一的GET
方法,您可以跳过映射自定义路由的部分。
希望对您有所帮助。
祝你好运!
[RoutePrefix("web/api")]
public class UsersController : BaseController
{
[Route("users")]
[HttpGet]
public Response<List<UserDTO>> Get(string q, string ex)
很抱歉打扰大家,但这完全可以。我做错的是我在 MVC 项目中有一些控制器指向相同的 url。结果我得到了 404。
但是非常感谢大家。