我是使用Java开发REST API
的新手。我使用mkyong
教程做了一个非常简单的教程,它只说“你好”。我正在使用Apache Tomcat。REST API无法以JSON格式工作
现在我正在尝试开发一个将返回JSON
对象的对象。我正在尝试这里的例子 - http://www.mkyong.com/webservices/jax-rs/json-example-with-jersey-jackson/。一些代码被改变(例如:包名称).Below是我的代码。
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>
我的应用程序是不是 a marven
项目。所以添加的库在下面。
我测试了以下网址的应用。
http://localhost:8080/RESTFUL_API_SAMPLE/rest/json/metallica/get
我得到的是下面的页面
为什么我没有得到预期的结果,任何想法?
请发布日志或者一些错误消息 –
尝试调试,在'Track track = new Track();'放置一个断点。此外,您正在重新调用“Track”对象,您需要返回一个JSONObject。 – kunpapa
不确定错误的原因,但您目前没有任何JSON支持。 [见这里](http://stackoverflow.com/a/30424031/2587435) –