gpt4 book ai didi

java - REST GET/POST如何发送和接收复杂参数?

转载 作者:行者123 更新时间:2023-11-30 04:26:48 25 4
gpt4 key购买 nike

我正在使用 Jersey 并将现有数据服务转换为 RESTful 数据服务。我可以成功转换最简单的 GET 和 PUT。但以下是一些我无法转换的:

  1. X Get (T)//用于具有复杂结果的复杂查询
  2. X Post (T)//用于创建复杂结果
  3. X PUT (T)//用于更新某些成功消息对象

其中 T 和 X 是复杂对象

我已经尝试过 @queryparam、@pathparam 和 GET 上的复杂对象以及 @consume 和 @product,但这些都不起作用。还尝试过使用 url 编码的 POST(尽管我确实需要 GET),但这也不起作用。

请帮忙。我需要执行此操作的示例代码。

最佳答案

REST 并非旨在处理复杂的查询,因为查询实际上是 URL。当您检索资源时,您可以指定所需资源的 ID。这只是一个数字或字符串,很容易在 URL 中表示;

http://host/employee/57

将为您提供员工 57。如果您的要求更复杂,那么您可能需要使用搜索方法,在其中传递多个参数。您可以使用 @QueryParam但这并不是真正的纯粹形式的 REST。

如果您要 POST 或 PUT 数据,则使用与执行 GET 时相同的 URL,只是这次您在内容正文中发送数据。由于您能够序列化对象以便将其返回到 GET 请求,因此您的客户端也应该能够序列化它以通过 PUT 或 POST 将其发送给您。

这是 GET 和 POST 的示例;

@XmlType
public class Employee {
private int id;
private String name;

//getters and setters
}


@Path("/employee")
public class EmployeeService {

@GET
@Path("/{id}")
@Produces(MediaType.APPLICATION_XML)
public Employee get(@PathParam("id") String id) {
Employee e = employeeDao.getEmployee(id);
if (e != null) {
return e;
} else {
throw new WebApplicationException(404);
}
}

@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public Employee post(Employee employee) {
return employeeDao.insertEmployee(employee); //Assumes your DAO sets the ID
}

}

关于java - REST GET/POST如何发送和接收复杂参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15683182/

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