【问题标题】:Generate link in Web API using Url.Link使用 Url.Link 在 Web API 中生成链接
【发布时间】:2020-10-05 10:20:30
【问题描述】:

我正在创建一个具有路由的 ASP.NET Core WebAPI。在返回结果中,我嵌入了链接。我正在使用 Url.Link() 生成这些链接,但创建的链接没有生成正确的 URL。

示例代码:

    [HttpGet( Name = "GetResultsRoute")]
  public IActionResult GetResults([FromQuery] AuthorResourceParameters parameters)
  {
     ...
     var myUrl = Url.Link("GetResultsRoute", new { pageNumber = parameters.PageNumber,pageSize = parameters.PageSize });
  .............

生成的 URL 将类似于:

"http://localhost:10010/api/authors?pageNumber=1\u0026pageSize=2"

我想要的是:

“http://localhost:10010/api/authors?pageNumber=1&pageSize=2”

我在这里做错了什么?

【问题讨论】:

  • 您如何查看结果? \u0026& 的 unicode 表示形式
  • 将链接放入浏览器后是否有效?带有 \u0026 的链接是编码链接。你可以做的是 System.Text.RegularExpressions.Regex.Unescape(str);但我觉得没必要
  • 没有链接在浏览器中不起作用
  • 它可以在我的项目中运行良好。您使用的是什么浏览器,您的 asp.net core 版本是什么?
  • ASP.net core 3.1 我的浏览器是 firefox 和 chrome,因为我没有同时使用我使用邮递员进行请求

标签: c# api asp.net-core


【解决方案1】:

我遇到了这个问题,我从使用 System.Text.Json 更改为使用 Newtonsoft.Json nuget 包。然后我使用newtonsoft 方法JsonConverter.SerializeObject(<myObj>) 并发现我的UrlLink 在我的响应标头中创建了一个工作分页URI。现在“&”出现在我需要的地方。

【讨论】:

    猜你喜欢
    • 2014-08-06
    • 2012-08-30
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 2014-11-16
    • 1970-01-01
    相关资源
    最近更新 更多