2

想知道是否有人尝试将Matrix URI与 ASP.NET Core 一起使用?

我们正在构建一个使用其版本的 Angular 前端,称为Route Parameters. 前端将需要对我们的后端进行类似的调用,并且它基于 ASP.NET Core 构建。但是,我真的无法在 Microsoft 的路由文档中找到有关它的任何信息。也许微软用不同的名字来称呼它,就像 Angular 一样。

矩阵 URI 如下所示:http://some.url.com;foo=bar;baz=bing

有几个很好的答案可以谈论它们是什么,我似乎找不到任何与 ASP.NET Core 相关的东西。

任何有关在 ASP.NET Core API 中实现矩阵 URI 的信息/建议将不胜感激。谢谢。

4

1 回答 1

0

我最近一直在考虑类似的事情。矩阵 URI 并不是什么新鲜事物,但并未广为人知或使用。我偶然发现了这个问题,空手而归。

经过更多研究,我决定编写一个自定义模型绑定器。我首先创建了一个存根来探索自定义模型绑定器是如何工作的,但是当我将它连接到我的控制器方法时,我有一个随机的想法......如果我只是使用 HttpGet 模板告诉 Web API 如何解析 URI并提取矩阵属性。

有效!这是代码:

/// <summary>
/// Retrieve a file resource by guid identifier
/// </summary>
/// <param name="id">A guid representing the generated ID of the resource</param>
/// <param name="fragment">hash of fragment being requested</param>
/// <returns></returns>
/// <response code="200">Returns the requested resource</response>
/// <response code="400">One or more of the values given was invalid</response>
/// <response code="404">The requested resource was not found</response>
/// <response code="303">Redirect to canonical/stable identity</response>
[HttpGet("file/id/{id};fragment={fragment}")]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status303SeeOther)]
public async Task<IActionResult> GetById(Guid? id, string fragment)
{
    if (id == null)
        return BadRequest("");

    ...

    return File(bytes, contentType, fileName);
}

FWIW我正在使用.net 5,但我有理由确定这至少在.net core 3中有效。

希望这可以帮助下一个解决这个问题的人!

于 2021-03-30T22:24:09.967 回答