gpt4 book ai didi

java - 如何在Azure的Spring云功能中设置响应状态

转载 作者:行者123 更新时间:2023-12-02 00:57:11 26 4
gpt4 key购买 nike

我是 Azure Functions 的新手,我想将 Spring Cloud Function 与 Azure Function 集成,我引用了很多文章,但无法获得有关如何使用 Spring Cloud 设置 HTTP 响应状态和自定义 API 生成内容的任何信息。

我正在使用以下 Maven 依赖项:

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-function-adapter-azure</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-function-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<!--<version>5.0.10.RELEASE</version>-->
</dependency>

这应该在 Azure 无服务器平台上运行。

1:Spring函数代码:

public class AuthorizationFunction implements Function<String,ServicesOut> {

@Autowired
private someservice;


@Override
public DomainObject apply(String entitlement) {

}
}

2:Spring Function Handler 集成 Azure

public class EntitlementHandler extends AzureSpringBootRequestHandler<String, ServicesOut> {

@FunctionName("functionname")
public DomainObject execute(@HttpTrigger(name = "request", methods = {HttpMethod.GET}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage request,
ExecutionContext context) {

// Depending on Function.apply value set httpresponse status and details
// set 201 when success
// set 401 when failure
// set 500 for other failures
}
}

任何帮助将不胜感激。

最佳答案

您可以通过返回HttpResponseMessage来自定义您的响应。更多详情,您可以引用:HttpRequestMessage and HttpResponseMessage

这是我的测试:

1。下载带有 spring 函数示例的 Azure 函数

git clone https://github.com/Azure-Samples/hello-spring-function-azure.git

2。修改类如下

HelloHandler 类

public class HelloHandler extends AzureSpringBootRequestHandler<HttpRequestMessage<Optional<User>>, HttpResponseMessage> {

@FunctionName("hello")
public HttpResponseMessage execute(
@HttpTrigger(name = "request", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<User>> request,
ExecutionContext context) {

context.getLogger().info("Greeting user name: " + request.getBody().get().getName());
return handleRequest(request, context);
}
}

类 hello() 函数 bean

@SpringBootApplication
public class HelloFunction {

public static void main(String[] args) throws Exception {
SpringApplication.run(HelloFunction.class, args);
}

@Bean
public Function<HttpRequestMessage<Optional<User>>, HttpResponseMessage> hello() {
return request -> request.createResponseBuilder(HttpStatus.ACCEPTED).body(request.getBody().get().getName()).build();
}
}

3。结果

当我修改函数时,我删除了所有测试类。因为它不再匹配了。如果您需要测试,您应该更改测试逻辑。

然后我只是在终端中运行该函数:mvn clean package azure-functions:run

然后我发出了一个http请求,并得到了以下响应:

enter image description here

您可以看到响应http状态为“Accepted”,这是我在函数中设置的正确值。

关于java - 如何在Azure的Spring云功能中设置响应状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57806302/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com