Как сделать часть URL-адреса необязательной в asp. net core 3+ web api и атрибут маршрута регулярного выражения? - PullRequest
0 голосов
/ 13 июля 2020

Я использую следующее регулярное выражение в маршруте и хочу поддерживать эти маршруты

  • / en-gb / api / cat /...
  • / th-th / api / cat /...
  • / api / cat /...

Я не могу поддерживать URL-путь без языкового стандарта, т.е. /api/cat/... Я попытался установить часть locale в моем регулярном выражении как опция с использованием ?. Я пробовал использовать регулярное выражение 101 и протестировал мое регулярное выражение, оно работает нормально (примечание [и {становится [[и {{в. net основных маршрутах API)

[ApiController]
[Route("/{url:regex([[a-zA-Z]]{{2}}-[[a-zA-Z]]{{2}})?}/api/cat/")]
public class CatApiController : ControllerBase

Это похоже на базовый c вариант использования , но я не могу понять. Может ли кто-нибудь помочь мне в этом.

РЕДАКТИРОВАТЬ -

[Route("{locale?}/api/cat/")]

Я тоже пробую это, но это не работает для URL-адреса без локали даже после сделать локаль необязательной.

1 Ответ

0 голосов
/ 14 июля 2020

он не работает для URL-адреса без языкового стандарта, даже после того, как языковой стандарт стал необязательным.

Вы можете попробовать определить несколько маршрутов, как показано ниже.

[ApiController]
[Route("/api/cat")]
[Route("{locale?}/api/cat")]
public class CatApiController : ControllerBase
{
    //...
...