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

Posted

技术标签:

【中文标题】无法使用 Postman 将 POST json 请求发送到 restful api【英文标题】:Unable to send POST json request to restful api using Postman 【发布时间】:2016-02-13 09:10:53 【问题描述】:

我有一个 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/entity 发送 GET 请求。

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

我收到了这个回复

【问题讨论】:

您有 JSON 提供程序吗?如果没有,请告诉我您使用的是哪个 Jersey 版本,我会看看是否可以帮助您找到合适的版本。 com.sun.jerseyjersey-server1.12com.sun.jerseyjersey-servlet1.12org.codehaus.jackson jackson-mapper-asl1.9.13 【参考方案1】:

查看您的依赖项,我发现您拥有核心的 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>

【讨论】:

我还需要做的一件事是:在 Book 类中放置一个空的构造函数,以便可以使用 Json 构造对象。 是的,我没听懂。但我确信杰克逊给了你一个非常明确的信息,告诉你你需要做什么:-)

以上是关于无法使用 Postman 将 POST json 请求发送到 restful api的主要内容,如果未能解决你的问题,请参考以下文章

.NET CORE API 使用Postman中Post请求获取不到传参问题

通过 Postman 发送带有图像的 POST json 对象

使用 Postman 通过原始 JSON 发送 POST 数据

无法使用 Postman 将 POST 变量发送到 localhost 上的 php 脚本

Postman 400 错误请求

无法在 Postman 中使用 POST 请求更新数据