FormatAttribute需要正向斜杠才能在没有参数的情况下执行操作

问题描述 投票:0回答:1

我有一个没有参数的GET方法,想要在下面工作

/API/books.XML

然而,这适用于正斜杠

/API/books/.XML

[Route("api/[controller]")]
[ApiController]
public class BooksController : ControllerBase
{
    [HttpGet]
    [Route(".{format}")]
    [FormatFilter]
    public ActionResult<List<Book>> Get()
    {
        return bookService.Get();
    }
}

我尝试的可能的解决方案是

  1. 没有{id}的注释 [Route("[controller]/[action].{format}")] // no slash between [action] and .{format}
  2. 在没有{id}的Startup.cs中添加默认路由,这样如果没有像这个问题那样传递id参数,那么路由不应该在{action}之后出现斜杠。 app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller}/{action=Index}"); });
asp.net-web-api asp.net-core routes asp.net-routing
1个回答
0
投票

根据控制器上当前定义的路径,您所描述的是设计。

请考虑更改路由以匹配所需的URL格式

[ApiController]
public class BooksController : ControllerBase {        
    [HttpGet]
    [Route("api/[controller].{format}")] //<--- GET api/books.xml
    [FormatFilter]
    public ActionResult<List<Book>> Get() {
        return bookService.Get();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.