gstackoverflow
gstackoverflow

Reputation: 37078

How to annotate jersey method if I want to pass json?

I have following jersey method declaration:

    @POST
    @Path("/fooPath")
    @Produces({MediaType.APPLICATION_JSON})
    @Consumes({MediaType.APPLICATION_JSON})
    public Response isSellableOnline(@FormParam("productCodes") final List<String> productCodes,
                                     @FormParam("storeName") final String storeName,
                                     @Context HttpServletRequest request) {

In rest client I try to invoke following method like this: enter image description here

When I debug method I see that received parameters are null:

enter image description here

How to rewrite method declaration?

Upvotes: 0

Views: 77

Answers (1)

FrAn
FrAn

Reputation: 434

It is because on the isSellableOnlie method you are expecting or trying to extract form parameters, but the incoming POST request is JSON.

Well if you want JSON you should make POJO Class to be able to serialize the JSON.

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Store {

private String storeName;
private List<String> productCodes;

public Store() {
}

public String getName() {
    return name;
}

public List<String> getProductCodes() {
    return productCodes;
}
}

And then in your method:

@POST
@Path("/fooPath")
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
public Response isSellableOnline(Store store) {
   store.getName();
...
}

Upvotes: 3

Related Questions