Как кодировать API REST java-джерси с многоуровневыми ресурсами? - PullRequest
5 голосов
/ 30 ноября 2011

Я хочу закодировать REST API, который является многоуровневым, например:

/country
/country/state/
/country/state/{Virginia}
/country/state/Virginia/city
/country/state/Virginia/city/Richmond

У меня есть один класс Java, который является ресурсом Country с @Path ("country")

Как мне создать StateResource.java и CityResource.java, чтобы мой Countryresource мог использовать StateResource так, как я планирую его использовать? Какие-нибудь полезные ссылки о том, как конструировать подобные вещи в Java?

1 Ответ

19 голосов
/ 30 ноября 2011

Класс CountryResource должен иметь метод, аннотированный @Path для подресурса CityResource. По умолчанию вы несете ответственность за создание экземпляра CityResource, например,

@Path("country/state/{stateName}")
class CountryResouce {

    @PathParam("stateName")
    private String stateName;

    @Path("city/{cityName}")
    public CityResource city(@PathParam("cityName") String cityName) {
        State state = getStateByName(stateName);

        City city = state.getCityByName(cityName);

        return new CityResource(city);
    }

}

class CityResource {

    private City city;

    public CityResource(City city) {
        this.city = city;
    }

    @GET
    public Response get() {
        // Replace with whatever you would normally do to represent this resource
        // using the City object as needed
        return Response.ok().build();
    }
}

CityResource предоставляет методы для обработки глаголов HTTP (GET в данном случае).

Для получения дополнительной информации обратитесь к документации на Джерси , касающейся локаторов подресурсов.

Также обратите внимание, что Джерси предоставляет ResourceContext для получения it для создания экземпляра подресурса. Если вы собираетесь использовать @PathParam или @QueryParam в подресурсе, я считаю, что вам нужно использовать это, поскольку среда выполнения не затрагивает подресурсы, когда вы сами создаете через new.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...