如何使用REST与Dropwizard实现通用资源

时间:2014-11-24 13:05:51

标签: java rest dropwizard

如何使用REST与Dropwizard实现通用资源来获取实体列表。所以我们可以通过给出实体名称来使用这个通用资源。

1 个答案:

答案 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);
  }
}