[RoutePrefix("web/api")]
public class UsersController : BaseController
{
[Route("users")]
[HttpGet]
public Response<List<UserDTO>> Get(string q, string ex)
我正在尝试让get函数响应: 网/ API /用户Q = SD&安培; EX = 1
但它不起作用?
答案 0 :(得分:1)
我认为你的错误是你在控制器类上使用RoutePrefix
并在方法上使用Route
。
如果你想像你所说的那样调用url,你应该像这样定义你的控制器:
[RoutePrefix("web/api/users")]
public class UsersController : BaseController
{
[HttpGet]
public Response<List<UserDTO>> Get(string q, string ex)
答案 1 :(得分:0)
试试这个:
`[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
答案 2 :(得分:0)
您可以添加自定义路线
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 }
);
答案 3 :(得分:0)
首先,为了能够在同一个控制器中拥有多个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
方法,您可以跳过映射自定义路由的部分。
希望这有帮助。
祝你好运!
答案 4 :(得分:0)
[RoutePrefix("web/api")]
public class UsersController : BaseController
{
[Route("users")]
[HttpGet]
public Response<List<UserDTO>> Get(string q, string ex)
很抱歉打扰你们所有人,但这完全没问题。我做错了是我在MVC项目中有一些控制器指向相同的URL。结果我得到了404.
但是非常感谢。