REST / XML Api с Java - PullRequest
       1

REST / XML Api с Java

5 голосов
/ 31 мая 2011

Я пытаюсь предоставить REST / XML Api, запрограммированный на Java. Прикладная программа получает параметр и затем возвращает содержимое XML через HTTP.

В PHP, как я бы решил эту проблему, имея файл rest_api.php, который предоставляет параметру & string = helloworld приложением, использующим мой API, затем я читаю эту строку, выполняю вычисления или выполняю поиск по ней, изменяю данные в встретить мою схему XML и ответить на эти данные эхом, который отправит их обратно с ответом HTTP.

Как мне сделать это правильно с Java?

Ответы [ 4 ]

7 голосов
/ 31 мая 2011

Два Java-расширения прекрасно работают с этой целью:

  • JAX-RS (эталонная реализация Джерси)
  • JAXB (эталонная реализация Metro)

Оба включены в эталонную реализацию Glassfish Java EE 5 и 6.

Короче говоря, JAX-RS позволяет объявлятьпростой метод в качестве веб-службы, добавив одну из аннотаций @GET, @POST, @PUT или @DELETE.JAX-RS также имеет аннотации для автоматического анализа параметров запроса пути и URL-адреса, и в большинстве случаев он заботится о построении правильных объектов ответа.

JAXB автоматически переводит простые объекты (POJO) в и из XML, добавляя@XmlRootElement, @XmlElement, @XmlID и т. Д. При объединении с JAX-RS маршалинг и демаршаллинг выполняется прозрачно.

Например:

// POJO with JAXB annotations

@XmlRootElement(name = "sensor")
public class MyObject {
    @XmlID
    @XmlElement
    private String id;

    @XmlAttribute
    private String name;

    @XmlElement(name = "sensor-value")
    private Integer value;

    @XmlTransient // don't translate to XML
    private Double computedValue;

    // ...getters and setters
}


// POJO with REST interface

@Path("/mywebservice")
public class MyWebService {
    @EJB
    MySensorController controller;

    @GET
    @Produces("application/xml")
    public MyObject getCurrentSensorValue(@QueryParam("ID") String id) {
        // automatic unmarshalling from MyObject to XML
        return controller.getSensorValue(id);
    }
}

Полученный XML будетвыглядеть примерно так:

<sensor name="foo">
    <id>123</id>
    <sensor-value>42</sensor-value>
</sensor>
3 голосов
/ 31 мая 2011

Я лично использовал оба,

который я могу порекомендовать.Мне показалось, что с Рестлетом легче начать, но Джерси предлагает лучшие возможности интеграции (по крайней мере, из-за того, как я это использовал).

2 голосов
/ 31 мая 2011

Фреймворк RESTlet должен быть довольно хорошим началом

1 голос
/ 04 января 2013

Я не пробовал Рестлет или Джерси, но я был очень доволен Apache Wink . Это хорошо работает в нашей производственной среде без проблем.

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