无法使用 Postman 将 POST json 请求发送到 restful api

Unable to send POST json request to restful api using 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 向 localhost:8080/实体成功发送 GET 请求。

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

我收到了这个回复

查看您的依赖项,我发现您拥有核心 Jackson 依赖项。仅靠 Jackson Core 是不够的。您需要 Jackson JAX-RS JSON 提供程序。这包含在

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

您还应该摆脱当前拥有的所有 Jackson 依赖项。以上将把它们拉进来(你不希望版本冲突)。

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

<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>