我是使用 Java 开发 REST API
的新手。我使用 mkyong
教程做了一个非常简单的,它只说“你好”。我正在使用 Apache Tomcat。
现在我正在尝试开发一个返回 JSON
对象的方法。我在这里尝试这个例子 - http://www.mkyong.com/webservices/jax-rs/json-example-with-jersey-jackson/ .一些代码已更改(例如:包名称)。下面是我的代码。
Track.java
package com.tutorialspoint;
/**
*
* @author Yohan
*/
public class Track {
String title;
String singer;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getSinger() {
return singer;
}
public void setSinger(String singer) {
this.singer = singer;
}
@Override
public String toString() {
return "Track [title=" + title + ", singer=" + singer + "]";
}
}
JsonService.java
package com.tutorialspoint;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
/**
*
* @author Yohan
*/
@Path("/json/metallica")
public class JsonService {
@GET
@Path("/get")
@Produces(MediaType.APPLICATION_JSON)
public Track getTrackInJSON() {
Track track = new Track();
track.setTitle("Enter Sandman");
track.setSinger("Metallica");
return track;
}
@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_JSON)
public Response createTrackInJSON(Track track) {
String result = "Track saved : " + track;
return Response.status(201).entity(result).build();
}
}
Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>Restful Web Application</display-name>
<servlet>
<servlet-name>NewServlet</servlet-name>
<servlet-class>NewServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>Jersey RESTful Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.tutorialspoint</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>NewServlet</servlet-name>
<url-pattern>/NewServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Jersey RESTful Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
</web-app>
我的应用程序不是 marven
项目。所以添加的库如下。
我使用以下 URL 测试了该应用程序。
http://localhost:8080/RESTFUL_API_SAMPLE/rest/json/metallica/get
我得到的只是下面的页面
知道为什么我没有得到预期的结果吗?
最佳答案
目前您没有任何 JSON/POJO 支持。 web.xml 中的 jersey-json
jar 和 POJOMappingFeature
配置适用于 Jersey 1.x,不适用于 Jersey 2.x。对于 Jersey 2.x 支持所需的所有 jar,请参阅 this answer .
关于java - REST API 无法以 JSON 格式工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35058636/