Ответ 1
RESTful - это скорее стиль архитектуры, чем другая технология. С точки зрения сервера, он предназначен для того, чтобы быть полностью безстоящим и автономным по принципу запроса (т.е. Есть сеансы нет). С точки зрения клиента, это больше способ получения информации в разных форматах через URL-адреса с параметрами пути (самодокументирующими), а не с параметрами запроса.
Конечно, вы можете сделать это с помощью простого серфинга ванили, но он будет вводить некоторый код шаблона для сбора параметров пути и для получения желаемого ответа. JAX-RS - это просто удобный и самодостаточный API, который устраняет необходимость написания всего кода шаблона самостоятельно, что приводит к минимальному и более самодокументируемому коду.
Предполагая, что у вас есть объект JAXB, как показано ниже:
@XmlRootElement
public class Data {
@XmlElement
private Long id;
@XmlElement
private String value;
// ...
@Override
public String toString() {
return String.format("Data[id=%d,value=%s]", id, value);
}
}
И ресурс JAX-RS, как показано ниже:
@Path("data")
public class DataResource {
@EJB
private DataService service;
@GET
@Path("text/{id}")
@Produces(MediaType.TEXT_PLAIN)
public String getAsText(@PathParam("id") Long id) {
return String.valueOf(service.find(id));
}
@GET
@Path("xml/{id}")
@Produces(MediaType.APPLICATION_XML)
public Data getAsXml(@PathParam("id") Long id) {
return service.find(id);
}
@GET
@Path("json/{id}")
@Produces(MediaType.APPLICATION_JSON)
public Data getAsJson(@PathParam("id") Long id) {
return service.find(id);
}
}
Тогда вы уже получите желаемый контент в соответствующем формате:
- http://example.com/rest/data/text/123
- http://example.com/rest/data/xml/123
- http://example.com/rest/data/json/123
Что это. Попробуйте сделать то же самое с одним простым ванильным сервлетом:) Обратите внимание, что SOAP по существу также проходит через HTTP. Это в основном дополнительный XML-уровень через HTTP, а не другой сетевой протокол.