无法使用 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 版本,我会看看是否可以帮助您找到合适的版本。查看您的依赖项,我发现您拥有核心的 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 数据