FormatAttribute требуется косая черта для действия без параметра - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть метод GET без параметров, и я хочу, чтобы ниже работал

/ апи / books.xml

Это, однако, работает с косой чертой

/ апи / книги / .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. Добавление маршрута по умолчанию в Startup.cs без {id}, так что если параметр id не передается, как в этой задаче, то при маршрутизации не следует ожидать косой черты после {action}.

    app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller}/{action=Index}");
        });
    

1 Ответ

0 голосов
/ 08 апреля 2019

Исходя из определенных на данный момент маршрутов на контроллере, вы описываете конструкцию.

Попробуйте изменить маршруты в соответствии с желаемым форматом URL

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