Вызвать RESTful веб-сервис с параметром - PullRequest
10 голосов
/ 03 июля 2011

У меня есть простой веб-сервис 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».

Как мы можем это сделать?

Спасибо!

Ответы [ 3 ]

23 голосов
/ 03 июля 2011

Два основных способа обработки параметра в 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 , поскольку он имеет полезные ссылки.

3 голосов
/ 16 октября 2013

Пример кода для веб-службы, которая принимает параметры в URl, будет выглядеть следующим образом:

@GET
@Path("/search")
public String getUserDetailsFromAddress(
              @QueryParam("name") String name) {
  return "Hello"+name;
}

, а URL будет выглядеть следующим образом:

http://localhost:8080/searchapp/mysearch/search?name=Tom
0 голосов
/ 03 июля 2011

Попробуйте добавить аннотацию Path следующим образом:

@javax.ws.rs.Path(“/bookstore/books/{bookId}”)
...