java - Azure Functions:Java 如何接受 application/xml 的内容类型然后将其转换为 POJO
问题描述
我一直在寻找有关如何使用 java 制作 azure 函数的指南
我也用谷歌搜索了很长时间。找不到有关如何操作的任何指南/示例/教程。
默认选项只接受 application/json 类型并转换为 POJO。
我需要的是该函数接受 application/xml 类型的数据。
将不胜感激任何帮助某人做一个示例代码片段或如何去做的步骤。
非常感谢你。
解决方案
这是一个使用 Gson for POJO 的简单演示:
import com.google.gson.Gson;
import com.microsoft.azure.functions.ExecutionContext;
import com.microsoft.azure.functions.HttpMethod;
import com.microsoft.azure.functions.HttpRequestMessage;
import com.microsoft.azure.functions.HttpResponseMessage;
import com.microsoft.azure.functions.HttpStatus;
import com.microsoft.azure.functions.annotation.AuthorizationLevel;
import com.microsoft.azure.functions.annotation.FunctionName;
import com.microsoft.azure.functions.annotation.HttpTrigger;
import java.util.Optional;
public class Function {
@FunctionName("HttpExample")
public HttpResponseMessage run(@HttpTrigger(name = "req", methods = { HttpMethod.GET,
HttpMethod.POST }, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request,
final ExecutionContext context) {
context.getLogger().info("Java HTTP trigger processed a request.");
final String query = request.getQueryParameters().get("name");
final String body = request.getBody().orElse(query);
if (body == null) {
return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
.body("Please pass a json with name and id in in the request body").build();
} else {
try {
User user = new Gson().fromJson(body, User.class);
return request.createResponseBuilder(HttpStatus.OK)
.body("Hello " + user.name + ", your id is " + user.id).build();
} catch (Exception e) {
return request.createResponseBuilder(HttpStatus.BAD_REQUEST).body("error eccors").build();
}
}
}
}
class User {
public int id;
public String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
结果:
更新
如果您想接受 POJO 的 xml,请尝试以下代码:
import com.microsoft.azure.functions.ExecutionContext;
import com.microsoft.azure.functions.HttpMethod;
import com.microsoft.azure.functions.HttpRequestMessage;
import com.microsoft.azure.functions.HttpResponseMessage;
import com.microsoft.azure.functions.HttpStatus;
import com.microsoft.azure.functions.annotation.AuthorizationLevel;
import com.microsoft.azure.functions.annotation.FunctionName;
import com.microsoft.azure.functions.annotation.HttpTrigger;
import java.io.StringReader;
import java.util.Optional;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
public class Function {
@FunctionName("HttpExample")
public HttpResponseMessage run(@HttpTrigger(name = "req", methods = { HttpMethod.GET,
HttpMethod.POST }, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request,
final ExecutionContext context) {
context.getLogger().info("Java HTTP trigger processed a request.");
final String query = request.getQueryParameters().get("name");
final String body = request.getBody().orElse(query);
if (body == null) {
return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
.body("Please pass a json with name and id in in the request body").build();
} else {
try {
JAXBContext jaxbContext = JAXBContext.newInstance(User.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
StringReader reader = new StringReader(body);
User user = (User) unmarshaller.unmarshal(reader);
return request.createResponseBuilder(HttpStatus.OK)
.body("Hello " + user.name + ", your id is " + user.id).build();
} catch (Exception e) {
return request.createResponseBuilder(HttpStatus.BAD_REQUEST).body(e).build();
}
}
}
}
@XmlRootElement(name = "User")
@XmlAccessorType(XmlAccessType.FIELD)
class User {
@XmlElement(name = "Id")
public int id;
@XmlElement(name = "Name")
public String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
结果:
推荐阅读
- cmake - CMake 步骤的规范名称是什么?
- laravel - 在 laravel 中加入多个表
- c++ - 无法使用 substr 正确解析带有空格的字符串并找到
- java - Oracle JDBC 优化:在 Spring 引导应用程序中启用 PreparedStatement 缓存
- xcode - 提交显示为由不同的用户 Xcode 完成
- excel - 如何在 Excel 和 PowerPoint w VBA 之间工作?
- angular - 没有通过 ElementRef 获取自定义属性的“名称”
- python - Teamcity 消息 unittest 在 Python 2 中看不到测试
- excel - 如果时间在凌晨 4 点之前,将表中的默认日期更改为上一个日期
- java - 如何替换序列化名称