首页 > 解决方案 > asp.net mvc core web api相同的模式操作并非一直有效

问题描述

我的控制器中有两种操作方法。

[Route("users")]
[ApiController]
public class UsersController : ControllerBase
{
    [HttpGet]
    [Route("username/{username}")]
    public async Task<IActionResult> GetUserByUsername(string username)
    {
        var response = await _userService.GetUserByUsername(username);

        return Ok(response);
    }

    [HttpGet]
    [Route("search/{term}")]
    public async Task<IActionResult> Search(string term)
    {
        var response = await _userService.Search(term);

        return Ok(response);
    }
}

这些是相同的模式。但有时我称之为Search行动,它运行GetUserByUsername行动。为什么会出现这种情况?

标签: asp.netasp.net-mvcasp.net-core

解决方案


在您的 Search 端点上使用[FromUri]属性,将方法更新为如下;

    [HttpGet]
    [Route("search")]
    public async Task<IActionResult> Search([FromUri] string term)
    {
        var response = await _userService.Search(term);

        return Ok(response);
    }

推荐阅读