Вызов веб-службы RESTful с параметром
У меня есть простой веб-сервис RESTful, который печатает "Hello World!"
Я использую NetBeans, и код выглядит следующим образом:
package resource;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.Consumes;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
@Path("simple")
public class SimpleResource {
@Context
private UriInfo context;
/** Creates a new instance of SimpleResource */
public SimpleResource() {
}
@GET
@Produces("application/xml")
public String getXml() {
//TODO return proper representation object
return "<greeting>Hello World !</greeting>";
}
@PUT
@Consumes("application/xml")
public void putXml(String content) {
}
}
Я вызываю эту веб-службу по этому URL-адресу: http://localhost:8080/WebService/resources/simple
.
Теперь я хочу отправить параметр этой веб-службе, а затем напечатать этот параметр после сообщения "Hello world".
Как мы можем это сделать?
Спасибо!
Ответы
Ответ 1
Два основных способа обработки параметра в REST - это разбор пути и извлечение части запроса.
Параметры пути
Они обрабатывают этот случай - /foo/{fooID}
- где {fooID}
- это шаблон, который будет заменен требуемым параметром:
@GET
@Produces("text/plain")
@Path("/foo/{fooID}")
public String getFoo(@PathParam("fooID") String id) {
// ...
}
Это отлично подходит для случая, когда вы можете рассмотреть параметр, описывающий ресурс.
Параметры запроса
Они обрабатывают этот случай - /?foo=ID
- точно так же, как вы делали традиционную обработку формы:
@GET
@Produces("text/plain")
@Path("/")
public String getFoo(@QueryParam("foo") String id) {
// ...
}
Это отлично подходит для случая, когда вы рассматриваете параметр для описания вспомогательного элемента ресурса, а не самого ресурса. Аннотация @FormParam
очень похожа, за исключением того, что она предназначена для обработки POST-формы вместо параметров стиля GET.
Другие типы параметров
Существуют и другие типы обработки параметров, поддерживаемые спецификацией JAX-RS (параметры матрицы, параметры заголовка, параметры файлов cookie), которые все работают примерно одинаково с программистом, но реже или более специализированы в использовании. Разумным местом для начала изучения деталей является JAX-RS javadoc, поскольку у этого есть полезные ссылки.
Ответ 2
Пример кода для веб-службы, которая принимает параметры в URl, будет выглядеть так:
@GET
@Path("/search")
public String getUserDetailsFromAddress(
@QueryParam("name") String name) {
return "Hello"+name;
}
и URL будет выглядеть следующим образом:
http://localhost:8080/searchapp/mysearch/search?name=Tom
Ответ 3
Попробуйте добавить аннотацию Path следующим образом:
@javax.ws.rs.Path("/bookstore/books/{bookId}")