@PathParam не дает мне переменную пути - PullRequest
0 голосов
/ 26 октября 2018

У меня есть метод POST (который принимает некоторые данные JSON). Я также хочу получить доступ к параметру пути "id" для своей обработки. Однако, когда я использую «@PathParam», я получаю тело JSON, которое я передал в запрос. Ниже мой код:

@Path("/products")
public class PurchaseService {

    @POST
    @Consumes("application/json")
    @Path("{id}/purchase")
    @Produces(MediaType.APPLICATION_JSON)
    public String doPurchaseForUser(@PathParam("id") String id) {
        String result = null;
        System.out.println("Product : " + id);
        return id;
    }
}

Если я передам тело POST как - {"user_id": 123}, переменная id в приведенном выше коде будет содержать это значение, а не значение id из URI. Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

Вы импортируете неправильный @PathParam. Это должно быть javax.ws.rs.PathParam. Вы, вероятно, импортируете веб-сокет (что является распространенной ошибкой, когда у вас есть зависимость javaee-api).

0 голосов
/ 26 октября 2018

Когда вы аннотируете свой метод с помощью @Consumes ("application/json"), это означает, что вы говорите веб-службе: этот метод ожидает объект в формате json в качестве параметра.Вот почему ваш String ID принимает содержимое JSON.

@Path("/products")

открытый класс PurchaseService {

@POST
@Consumes("application/json")
@Path("/purchase")
@Produces(MediaType.APPLICATION_JSON)
public String doPurchaseForUser(@QueryParam("id") String id,JsonObject jsonContent) {
    String result = null;
    System.out.println("Product : " + id);
    return id;
}

}

Ваш URL будет выглядеть следующим образом localhost:8080/ShoppingSocieties/Shopping/products/purchase?id=1

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