Хорошо, теперь я могу вам немного помочь.Главное, что вы не должны использовать регулярные выражения здесь.Здесь вы должны использовать параметры маршрута .Согласно this вы должны иметь возможность использовать точно такой же синтаксис, что и веб-API.
Проблема в том, что URL-адрес может различаться, и нам нужно рассмотреть несколько случаев.
Это будет соответствовать / subscription / {id} / resourcegroups / {id} / provider / {id}
Затем определите это так
[FunctionName("Function1")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "f1/subscriptions/{subid:int?}/resourcegroups/{resid:int?}/providers/{proid:int?}")] HttpRequest req,
ILogger log, int? subid, int? resid, int? proid)
{
log.LogInformation("C# HTTP trigger function processed a request.");
return new OkObjectResult($"Got s {subid}, r {resid}, p {proid}");
}
Конечно, вы должны использовать типы и ограничения, которые имеют смысл для вас.Проблема с этим в том, что вы действительно должны указать все параметры http://localhost:7071/api/f1/subscriptions/1/resourcegroups/0/providers/4
.Вы не сможете писать что-то вроде http://localhost:7071/api/f1/providers/4
.Таким образом, я бы создал функцию для этого и каждого другого случая, извлекая общую логику в некоторый другой класс / метод:
[FunctionName("Function2")]
public static async Task<IActionResult> Run2(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "f2/providers/{proid:int?}")] HttpRequest req,
ILogger log, int? proid)
{
log.LogInformation("C# HTTP trigger function processed a request.");
return new OkObjectResult($"Got p {proid}");
}
Другая возможность - использовать параметр подстановочного знака , matchвесь маршрут к переменной, а затем проанализируйте его с помощью регулярного выражения.