В чем разница между @PathParam и @QueryParam - PullRequest
91 голосов
/ 07 апреля 2011

Я новичок в футболке RESTful. Я хотел бы спросить, в чем разница между @PathParam и @QueryParam в майке?

Ответы [ 3 ]

133 голосов
/ 07 апреля 2011

Параметры запроса добавляются в URL после отметки ?, а параметр пути является частью обычного URL.

В приведенном ниже URL-адресе tom может быть значением параметра пути, и существует один параметр запроса с именем id и значением 1:

http://mydomain.com/tom?id=1

11 голосов
/ 18 июля 2016

Наряду с вышеприведенным пояснением, предоставленным @Ruben, я хочу добавить, что вы также можете ссылаться на аналог в реализации Spring RESTFull.

JAX-RS Спецификация @PathParam - связывает значение параметра шаблона URI или сегмента пути, содержащего параметр шаблона, с параметром метода ресурса, полем класса ресурса или свойством компонента класса ресурса.

@Path("/users/{username}")
public class UserResource {

        @GET
        @Produces("text/xml")
        public String getUser(@PathParam("username") String userName) {
            ...
        }
    }

@ QueryParam - связывает значение (я) параметра HTTP-запроса с параметром метода ресурса, полем класса ресурса или свойством компонента класса ресурса.

URI: users / query? From = 100

@Path("/users")
public class UserService {

    @GET
    @Path("/query")
    public Response getUsers(
        @QueryParam("from") int from){
}}

Чтобы добиться того же, используя Spring, вы можете использовать

@ PathVariable (Spring) == @PathParam (Джерси, JAX-RS),

@ RequestParam (Spring) == @QueryParam (Джерси, JAX-RS)

0 голосов
/ 18 июля 2019

Кроме того, параметр запроса может быть нулевым, а параметр пути - нет. Если вы не добавите параметр path, вы получите ошибку 404. Таким образом, вы можете использовать параметр пути, если хотите отправить данные как обязательные.

...