我有一个不带参数的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();
}
}
我尝试过的可能解决方案是
不带{id}
的注释[Route("[controller]/[action].{format}")] // no slash between [action] and .{format}
在不带{id}的Startup.cs中添加默认路由,这样,如果像这样的问题那样未传递id参数,则该路由不应在{action}之后出现斜线。
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller}/{action=Index}");
});
答案 0 :(得分: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();
}
}