如何使用REST与Dropwizard实现通用资源来获取实体列表。所以我们可以通过给出实体名称来使用这个通用资源。
答案 0 :(得分:2)
这是一个非常简单的例子。你需要做的只是创建具体的类,并将它们作为资源添加到你的球衣。除非您愿意,否则不需要覆盖方法。
public abstract class GenericResource<T extends GenericObject> {
protected HashMap<UUID, T> database = new HashMap<>();
@GET
public Collection<T> list() {
return database.values();
}
@GET
@Path("/{id}")
public T get(@PathParam("id") UUID id) {
return database.get(id);
}
@POST
public T save(T t) throws Exception {
if (database.containsKey(t.getId())) {
throw new Exception("an item already exists with given id " + t.getId());
}
database.put(t.getId(), t);
return t;
}
@PUT
public T update(T t) throws Exception {
if (!database.containsKey(t.getId())) {
throw new Exception("an item does not exist with given id " + t.getId());
}
database.put(t.getId(), t);
return t;
}
@DELETE
@Path("/{id}")
public void delete(@PathParam("id") UUID id) throws Exception {
if (database.containsKey(id)) {
throw new Exception("an item already exists with given id " + id);
}
database.remove(id);
}
}