Поддержка номера версии и имени класса для URL-адреса маршрута с помощью функции Azure 2.x - PullRequest
1 голос
/ 08 марта 2019

Маршрут определяется с v1 жестко, как показано ниже:

    [FunctionName("Car")]
    public async Task<IActionResult> Car(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "v1/Car")]
    HttpRequest httpRequest)
    {

    }

Можно ли изменить v1 выше, как показано ниже, в ASP.NET Core 2.x, где номер версии определен централизованно и менее подвержен ошибкам?

[ApiVersion("1")]
[Route("api/v{version:apiVersion}/[controller]")]
[ApiController]
public class CarController : Controller
{

}

Визуальная студия 2017

Обновление

У меня есть две функции в классе с такими URL-адресами:

/v1/classname/car1

/v1/classname/car2

В настоящее время я должен сделать

Route = "classname/car1"
Route = "classname/car2"

Можно ли централизовать имя класса в части URL?

Возможно ли применить номер версии к функциям в выбранном классе. Так что разные функции могут одновременно использоваться для функций разных классов

Интересно, поддерживает ли функция Azure это как ASP.NET CORE 2.x.

1 Ответ

1 голос
/ 08 марта 2019

Согласно предоставленному вами описанию, вы хотите, чтобы номер версии определялся централизованно. Если это так, вы можете использовать routePrefix в host.json для достижения этого.

Для v2 вы можете использовать пример в host.json, как показано ниже:

{
  "version": "2.0",
  "extensions": {
    "http": {
      "routePrefix": "v1"
    }
  }
}

И заголовок функции выглядит следующим образом:

public static async Task<IActionResult> Car(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "Car")]
    HttpRequest httpRequest, ILogger log)
    {    }

Результат здесь:

[POST] http://localhost:7071/v1/Car

Для более подробной информации, вы можете обратиться к этой статье .

...