我是使用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) –