REST 模擬CURD操作

2018-08-08 14:19 更新

在管理系統(tǒng)中有幾個常用的 CURD 操作,接下來我們會對它們進行嘗試,來模擬一個“用戶管理”。

服務端

在服務端,我們要提供 REST 風格的 API。

UserBean

先創(chuàng)建一個用戶對象 UserBean.java

@XmlRootElement
public class UserBean {

    private int userId;
    private String name;
    private int age;

    public int getUserId() {
        return userId;
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

UserResource

新建一個資源類 UserResource.java 。加@Path("users")注解用來說明 資源根路徑是 users.

添加

private static Map<Integer,UserBean> userMap  = new HashMap<Integer,UserBean>();

用來在內存中存儲數(shù)據(jù)。可以在 userMap 獲取我們想要查詢的數(shù)據(jù)。

完整的代碼如下:

@Path("users")
public class UserResource {

    private static Map<Integer,UserBean> userMap  = new HashMap<Integer,UserBean>();
    /** 
     * 增加 
     * @param user 
     */  
    @POST  
    @Consumes(MediaType.APPLICATION_JSON)  
    public List<UserBean> createUser(UserBean user)  
    {  
        userMap.put(user.getUserId(), user );  
        return getAllUsers(); 
    }  

    /** 
     * 刪除 
     * @param id 
     */  
    @DELETE  
    @Path("{id}")  
    public List<UserBean> deleteUser(@PathParam("id")int id){  
        userMap.remove(id); 
        return getAllUsers(); 
    }  

    /** 
     * 修改 
     * @param user 
     */  
    @PUT  
    @Consumes(MediaType.APPLICATION_JSON)  
    public List<UserBean> updateUser(UserBean user){  
        userMap.put(user.getUserId(), user );  
        return getAllUsers(); 
    }  

    /** 
     * 根據(jù)id查詢 
     * @param id 
     * @return 
     */  
    @GET  
    @Path("{id}")  
    @Produces(MediaType.APPLICATION_JSON)  
    public UserBean getUserById(@PathParam("id") int id){  
        UserBean u = userMap.get(id);  
        return u;  
    }  

    /** 
     * 查詢所有 
     * @return 
     */  
    @GET  
    @Produces(MediaType.APPLICATION_JSON)  
    public List<UserBean> getAllUsers(){       
        List<UserBean> users = new ArrayList<UserBean>();     
        users.addAll( userMap.values() );    
        return users;  
    }  
}

為了簡單起見,我們約定 POST 就是處理新增,PUT 用來做修改,DELETE 刪除,GET 就是查詢。

自此,服務端接口開發(fā)完畢。

客戶端

為了快速測試接口,可以用第三方 REST 客戶端測試程序,我這里用的是 RESTClient 插件,可以在火狐中安裝使用。

增加用戶

我們先增加一個用戶對象,使用 JSON 格式:

{
    "userId": 1,
    "age": 28,
    "name": "waylau.com"
}

提示報錯:415 未支持媒體格式的錯誤。

simulation-curd-01

由于我們在新增的接口里面設置的是

@Consumes(MediaType.APPLICATION_JSON)  

規(guī)定只接收 JSON 格式,而 默認的 “Conten-Type” 是“text/html”所以在還需要在 header 里設置一下 為 “application/json”:

simulation-curd-02

就可以了。我們在添加一個用戶對象

{
    "userId": 2,
    "age": 24,
    "name": "www.waylau.com"
}

響應的數(shù)據(jù)里面就能看到我們的添加的用戶了。

simulation-curd-04

修改用戶

修改用戶1 的數(shù)據(jù):

{
    "userId": 1,
    "age": 24,
    "name": "小柳哥"
}

用 PUT 請求:

simulation-curd-05

在返回的數(shù)據(jù)里面可以看到用戶1 被修改

查詢用戶

在根據(jù) ID 查詢的接口里面

@GET  
@Path("{id}")  
@Produces(MediaType.APPLICATION_JSON)  
public UserBean getUserById(@PathParam("id") int id){  
    UserBean u = userMap.get(id);  
    return u;  
} 

@Path("{id}")指 id 這個子路徑是一個變量。我們查詢用戶1 時,要將用戶 1 的 userId 放在請求的URI 里面http://localhost:8080/webapi/users/1

simulation-curd-07

刪除用戶

與上面類似,也是用到了@Path("{id}")

simulation-curd-07

我們看到用戶1被刪除了。

自此整個應用完成了。這個“用戶管理”夠簡單吧~

源碼

見 simulation-curd。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號