#azure #spring-boot #azure-functions #azure-function-app #azure-functions-core-tools
#azure #весенняя загрузка #azure-функции #azure-функция-приложение #azure-functions-core-tools
Вопрос:
Я хочу использовать одно имя функции Azure, но для каждой функции операции http будут разными, возможно ли это?
Например —
@FunctionName("message")
public ResponseDTO saveMessage(
@HttpTrigger(name = "messageReq", methods = {HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<Message>> request,
ExecutionContext context) {
return handleRequest(request.getBody().get(), context);
}
@FunctionName("message")
public ResponseDTO getMessage(
@HttpTrigger(name = "MessageGetReq", methods = {HttpMethod.GET}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage request,
@BindingName("to") String to, ExecutionContext context) {
return handleRequest(to, context);
}
@FunctionName("message")
public ResponseDTO deleteMessage(
@HttpTrigger(name = "MessageGetReq", methods = {HttpMethod.DELETE}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage request,
@BindingName("id") String id, ExecutionContext context) {
return handleRequest(id, context);
}
Я пробовал то же самое, но не знаю, как обращаться с файлом компонента, поскольку @Bean name должно совпадать с именем функции, но в этом случае все имя компонента будет таким же, как «сообщение», которое выдаст ошибку, даже если мы не определяем имя компонента, оно будет совпадать с именем метода, но для этоготакже все 3 имени метода будут «message», что приведет к ошибке компиляции.
@Bean("message")
public Function<Message,ResponseDTO> saveMessage() {
return message -> {
return msgService.saveMessage(message);
};
}
@Bean("message")
public Function<String, ResponseDTO> deleteMessage() {
return id -> msgService.getMessages1(id);
}
@Bean("message")
public Function<String, ResponseDTO> getMessage() {
return to -> msgService.getMessages1(to);
}
Таким образом, я хочу иметь только одно имя функции Azure в качестве «сообщения» с помощью операции GET / POST / DELETE. Любая помощь будет оценена.
Ответ №1:
можете ли вы сделать это, указав один и тот же маршрут для каждой функции — затем имя игнорируется, поскольку оно должно проходить по маршруту, а затем определять функцию на основе действия.
например, route = /api/message