asp.net - 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
行动。为什么会出现这种情况?
http://localhost/users/username/mmyusername => calls GetUserByUsername
http://localhost/users/search/fra => calls Search
http://localhost/users/search/français => returns nothing but 200 ,becaues
http://localhost/users/search?term=fra => calls GetUserByUsername
解决方案
在您的 Search 端点上使用[FromUri]
属性,将方法更新为如下;
[HttpGet]
[Route("search")]
public async Task<IActionResult> Search([FromUri] string term)
{
var response = await _userService.Search(term);
return Ok(response);
}
推荐阅读
- python - 如何将循环字典从 beautifulsoup4 抓取结果保存为 JSON 文件格式..?
- angular - ng2-pdf-viewer 错误:无效的参数对象:需要 .data、.range 或 .url
- java - 如何在 LibGDX-AI >1.8.0 中实现寻路
- mysql - 如何匹配 SQL 中的任何字母?
- python - 试图迭代pymongo中的“子词典”
- python - 使用 Pulp 加速整数线性优化
- google-apps-script - 使用复选框和按钮向文档添加文本?
- angular - 我怎样才能修改材料滑块(视频滑块)以在正确的时间间隔有很少的评论图标?
- php - 在 php 中显示 2 个 sql 查询的结果表
- html - 如何仅使一个内联元素居中?