我有一个JavaWeb服务,其中包含一个泽西RESTendpoint,它将Restaurant POJO列表作为JSON对象返回(请参阅下面的Restaurant类)
/api/restaurants
并返回与Restaurant类绑定的所有数据。但是,我想添加另一个更精简的endpoint,如下所示
/api/restaurants/name
对于所有餐厅,它仅返回餐厅POJO的id和名称。在Jersey开箱即用中是否有一种很好的方法来实现这一点(例如,为特定endpoint指定您希望从POJO中获得的字段)?
相应的POJO看起来像这样:
@XmlRootElement
public class Restaurant {
// Members
private Long id;
private String name;
private List<Menu> menus;
...
// Constructors
public Restaurant() {}
...
// Getters and setters
...
}
如果你还需要什么,请随时告诉我!谢谢
首先,我猜想您的api将是
/api/restaurants/{restaurantId}/name
而不是
/api/餐厅/名称
至于你的问题,球衣有这个功能的开箱,我不确定。尽管如此,这是一种更容易处理的方法。
在POJO中,您可以执行以下操作:
public class Restaurant {
// Members
private Long id;
private String name;
private List<Menu> menus;
...
// Constructors
public Restaurant() {}
...
// Getters and setters
...
// For getting only id and name
public Map getIdAndName()
{
Map<Object, Object> map = new HashMap<>();
map.put("id", this.id);
map.put("name", this.name);
return map;
}
// For getting just a list of menu and name
public Map getNameAndMenu()
{
Map<Object, Object> map = new HashMap<>();
map.put("menus", this.menus);
map.put("name", this.name);
return map;
}
在你的服务课上,你几乎可以使用这样的东西
@Path("/api/restaurants/{restaurantId}/name")
@Produces("application/json")
public String getRestaurantName(@PathParam("restaurantId") String restaurantId)
{
// GET RESTAURANT
Restaurant restaurant = getRestaurant(restaurantId);
Gson gson = new Gson();
// CONVERT TO JSON AND RETURN (or let jersey do that serializable, whichever way is preferable to you.
return gson.toJson(restaurant.getIdAndName());
}
希望这有帮助!
是的,Jersey支持选择序列化XML/JSON中包含的元素。请参阅手册的实体过滤部分。
本质上,您可以使用自定义注释在POJO中注释特定的@XmlElements。在REST资源中,构建响应时将注释传递给Jersey。
请注意,这仅在您使用Eclipse Link MOXy作为JAXB提供程序时才有效。
声明我应该能够使用中选择s.message来查询实体,这确实适用于控制台。 然而,我真正想做的是在返回列表中只返回实体的特定属性,就像这样: 不过,这会出错,根本没有真正的错误消息。我可以看到Hibernate运行了这个查询: 的传统方法工作正常:
我的DTO不同于实体。如何返回带分页的DTO而不是实体,同时仍显示所有页的信息?
null 这似乎意味着我不像使用简单的“From customer”查询那样获取customer实体的实例。如果是这种情况,如何返回客户实体?如果没有,那我做错了什么?
我制作了一个返回UserSettings对象数组的服务: 当我在URL http://localhost:8181/settings?ids=123&fields=customdata,user_id上发出GET请求时,我会得到以下信息:
问题内容: 我正在构建RESTful API,并希望为开发人员提供选择以在JSON响应中返回哪些字段的选项。 这篇博客文章显示了几个API(Google,Facebook,LinkedIn)如何允许开发人员自定义响应的示例。这称为部分响应。 一个示例可能看起来像这样: 在上面的示例中,API应该返回用户“ 123”的userId,fullName和title字段。 我正在寻找有关如何在我的REST
我设置了多个这样的父子实体。 在前端,我有一个页面显示一个营表,供用户选择以查看详细信息。此页面依赖于RESTful API,并将存储库和服务类设置为RESTful API。 我的问题是JPARepository的方法不仅返回营条目列表,还返回营链接到的父旅实体,以及每个营包含的所有关联子连。它会使JSON数据膨胀(我不需要表中的所有细节),并使调试时难以读取,更不用说将所有数据转储到客户端的安全