gpt4 book ai didi

asp.net-core - 使用空路由指定可选格式扩展名

转载 作者:行者123 更新时间:2023-12-02 02:32:22 26 4
gpt4 key购买 nike

我的 Controller 看起来像:

[FormatFilter]
[Route("api/foo")]
public class FooController : Controller
{
[HttpPost("")]
public IActionResult Foo()
{
...
}
}

我想添加一个可选的格式扩展名 documented here 。但是,我希望路线最终像“/api/foo.json”一样。下面的代码非常失败,所有变体都返回 404。

[HttpPost(".{format?}"]

我的下一个想法是做类似的事情:

[HttpPost("foo.{format?}")]

有效地将 Controller 范围内的路由的该部分移动到操作。然而,这会引发 500 错误:

Error: In the segment 'foo.{format?}', the optional parameter 'format' is preceded by an invalid segment 'foo.'. Only a period (.) can precede an optional parameter.

显然,唯一起作用的是:

[HttpPost("{id}.{format?}"]

换句话说,可选格式参数似乎必须始终遵循另一个参数才能工作,这对我来说似乎是一个绝对愚蠢的限制。我在这里错过了什么吗?有什么想法可以让它与像这样的静态路由一起工作吗?

最佳答案

简单*(经过大量试验和错误)

[FormatFilter]
[HttpPost("foo"), HttpPost("foo.{format}")]
public class FooController : Controller
{
[HttpPost("")]
public IActionResult Foo()
{
...
}
}

[FormatFilter]
[HttpPost, Route("foo"), Route("foo.{format}")]
public class FooController : Controller
{
[HttpPost("")]
public IActionResult Foo()
{
...
}
}

*提示:

  • 可选参数“format”前面有一个无效段'富。'。可选参数前面只能有句点 (.)
  • 一个操作接受多个路由模板

关于asp.net-core - 使用空路由指定可选格式扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45830805/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com