无法使用Postman

时间:2015-11-12 05:01:19

标签: json rest post jersey postman

我有一个 RESTful api,如下所示:

@Path("/entity")
public class EntityService {

    @GET
    @Path("/create")
    public Response createEvent(){
        return Response.ok("Entity created successfully").build();
    }

    @POST
    @Path("/test")
    @Consumes(MediaType.APPLICATION_JSON)
    public Response testPost(Book book){
        System.out.println(book.toString());
        return Response.ok("Testing Post").build();
    }

    /**
     * Book have an id and name
     */
    public class Book {
        public String id;
        public String name;

        public Book(String id, String name) {
            this.id = id;
            this.name = name;
        }

        @Override
        public String toString() {
            return id + ", " + name;
        }
    }
}

我可以使用POSTMAN成功向本地主机:8080 /实体发送GET请求。

但不知道如何发送POST请求。 我已经使用邮递员提出请求,如图所示。

Request

我得到了这个回复

Reponse

1 个答案:

答案 0 :(得分:0)

查看您的依赖项,我发现您拥有核心的Jackson依赖项。杰克逊核心本身并不足够。您需要Jackson JAX-RS JSON提供程序。这包含在

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-json</artifactId>
    <version>1.12</version>
</dependency>

您还应该摆脱目前拥有的所有Jackson依赖项。以上内容会将它们拉入(你不希望版本冲突)。

然后,您需要通过在web.xml中添加POJO映射功能配置开关来配置Jersey以使用Jackson

<servlet>
    <servlet-name>...</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
        <param-value>true</param-value>
    </init-param>
       ...
</servlet>