DropWizard использует Jersey под капотом для ОТДЫХА. Я пытаюсь выяснить, как написать клиент для конечных точек RESTful, которые откроет мое приложение DropWizard.DropWizard/Jersey API Клиенты
Ради этого примера, скажем, мой DropWizard приложение имеет CarResource
, который предоставляет несколько простых RESTful конечных точек для CRUDding автомобилей:
@Path("/cars")
public class CarResource extends Resource {
// CRUDs car instances to some database (DAO).
public CardDao carDao = new CarDao();
@POST
public Car createCar(String make, String model, String rgbColor) {
Car car = new Car(make, model, rgbColor);
carDao.saveCar(car);
return car;
}
@GET
@Path("/make/{make}")
public List<Car> getCarsByMake(String make) {
List<Car> cars = carDao.getCarsByMake(make);
return cars;
}
}
Так что я бы себе представить, что структурированная клиент API будет что-то вроде CarServiceClient
:
// Packaged up in a JAR library. Can be used by any Java executable to hit the Car Service
// endpoints.
public class CarServiceClient {
public HttpClient httpClient;
public Car createCar(String make, String model, String rgbColor) {
// Use 'httpClient' to make an HTTP POST to the /cars endpoint.
// Needs to deserialize JSON returned from server into a `Car` instance.
// But also needs to handle if the server threw a `WebApplicationException` or
// returned a NULL.
}
public List<Car> getCarsByMake(String make) {
// Use 'httpClient' to make an HTTP GET to the /cars/make/{make} endpoint.
// Needs to deserialize JSON returned from server into a list of `Car` instances.
// But also needs to handle if the server threw a `WebApplicationException` or
// returned a NULL.
}
}
Но только два официальных ссылки уронить мастера клиентов я могу найти абсолютно противоречащими друг другу:
- DropWizard recommended project structure - который утверждает, что я должен поставить свой код клиента в
car-client
проекта подcar.service.client
пакета; но затем ... - DropWizard Client manual - что делает его похожим на «DropWizard Client» предназначен для интеграции моего приложения DropWizard с другими RESTful веб-сервисами (таким образом, выступая посредником).
Так что я спрашиваю, каков стандартный способ написания клиентов Java API для ваших веб-сервисов DropWizard? У DropWizard есть клиентская библиотека, которую я могу использовать для этого типа использования? Должен ли я внедрять клиента через API-интерфейс клиента Джерси? Может кто-то добавить псевдокод к моему CarServiceClient
, чтобы я мог понять, как это будет работать?