簡體   English   中英

靜態返回類型xml或json

[英]return type xml or json in restful

我在下面以及與郵遞員一起測試時有一些代碼。 發生錯誤“ 500”。 我不了解“ @Produces(MediaType.APPLICATION_XML)”的優點。 是否自動將返回類型定義為XML。

import java.sql.SQLException;
import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/UserService")
public class UserService {
    UserDAO userDAO = new UserDAO();

    @GET
    @Path("/users")
    @Produces(MediaType.APPLICATION_XML)
    public List<User> getUsers() throws ClassNotFoundException, SQLException {
        return userDAO.getAllUsers();
    }

}

是的,@ @Produce定義產生的格式。 因此,您的用戶列表將采用XML格式。 不要忘記對Postman標頭進行參數設置以接受XML。

//To process HTTP GET requests.
 @GET

//@Path Identifies the URI path that a resource class will serve requests for.
 @Path("/abcd")

//@Produces defines the media type(s) that the methods of a resource class can produce.
@Produces(MediaType.APPLICATION_XML

我希望您准備了User類-具有XmlRootElement和XML元素

舉個例子-

@XmlRootElement(name="User")
public class User{

    private int id;
    private String name; 

    public User() {

    }


    @XmlElement
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }

    @XmlElement
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }  
}

它指定此方法產生的內容類型 (是復數!)(因此命名)。 這用來

  1. 選擇正確的方法來執行傳入的請求
  2. 確定產生什么作為回應。

在您的情況下,當傳入請求需要JSON時,您將獲得HTTP 406,因為沒有什么可以處理此方法。

現在,如果該方法已經用@Produces( {MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON} )進行了注釋,那么它將被提供並且將生成JSON。 現在,您可以使用提供JSON和XML的單一方法。 根據傳入請求的Accept-Header確定服務內容。

作為您的方法,結果以xml格式返回。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM