【发布时间】:2019-12-16 18:10:35
【问题描述】:
我有一个支持分页的端点:api/accounts?pageNumber=1&pageSize=50
[HttpGet]
public IActionResult GetAccounts(int pageNumber, int pageSize)
{
var accounts = _accountService.GetAccounts(pageNumber, pageSize);
Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(accounts.GetMetadata()));
return Ok(accounts);
}
但是,如果有人发送,从技术上讲,bad request pageSize 太大或根本没有分页参数,而不是发回400 status,我想用默认参数将其重定向到正确的 URL。这意味着:
如果有人在浏览器中输入api/accounts,他将被重定向到api/accounts?pageNumber=1&pageSize=50。我希望他在浏览器中看到一个新 URL。另外,如果有人这样做:
api/accounts?pageNumber=1&pageSize=500000000,我想做和前面例子一样的事情,去这个:api/accounts?pageNumber=1&pageSize=50 并在浏览器中显示。
你能帮我解决这个问题吗? 谢谢
【问题讨论】:
-
使两个参数都可以为空(可选)。然后在方法中检查它们是否有值。不,分配默认值。是的,检查它们的值,如果超出允许值,指定默认值。
-
@CodingYoshi 这就是我现在实际操作的方式。但是当我在浏览器中输入
api/accounts时,我确实得到了50 个page1,但地址栏仍然显示api/accounts。我希望更改地址栏,以便它反映响应中的实际内容 -
为此,您需要进行 301 重定向。您可以重定向到相同的方法。
标签: c# asp.net-core redirect asp.net-web-api asp.net-core-webapi