REST 模擬CURD操作

2018-08-08 14:19 更新

在管理系統(tǒng)中有幾個(gè)常用的 CURD 操作,接下來(lái)我們會(huì)對(duì)它們進(jìn)行嘗試,來(lái)模擬一個(gè)“用戶(hù)管理”。

服務(wù)端

在服務(wù)端,我們要提供 REST 風(fēng)格的 API。

UserBean

先創(chuàng)建一個(gè)用戶(hù)對(duì)象 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

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

添加

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

用來(lái)在內(nèi)存中存儲(chǔ)數(shù)據(jù)。可以在 userMap 獲取我們想要查詢(xún)的數(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查詢(xún) 
     * @param id 
     * @return 
     */  
    @GET  
    @Path("{id}")  
    @Produces(MediaType.APPLICATION_JSON)  
    public UserBean getUserById(@PathParam("id") int id){  
        UserBean u = userMap.get(id);  
        return u;  
    }  

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

為了簡(jiǎn)單起見(jiàn),我們約定 POST 就是處理新增,PUT 用來(lái)做修改,DELETE 刪除,GET 就是查詢(xún)。

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

客戶(hù)端

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

增加用戶(hù)

我們先增加一個(gè)用戶(hù)對(duì)象,使用 JSON 格式:

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

提示報(bào)錯(cuò):415 未支持媒體格式的錯(cuò)誤。

simulation-curd-01

由于我們?cè)谛略龅慕涌诶锩嬖O(shè)置的是

@Consumes(MediaType.APPLICATION_JSON)  

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

simulation-curd-02

就可以了。我們?cè)谔砑右粋€(gè)用戶(hù)對(duì)象

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

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

simulation-curd-04

修改用戶(hù)

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

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

用 PUT 請(qǐng)求:

simulation-curd-05

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

查詢(xún)用戶(hù)

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

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

@Path("{id}")指 id 這個(gè)子路徑是一個(gè)變量。我們查詢(xún)用戶(hù)1 時(shí),要將用戶(hù) 1 的 userId 放在請(qǐng)求的URI 里面http://localhost:8080/webapi/users/1

simulation-curd-07

刪除用戶(hù)

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

simulation-curd-07

我們看到用戶(hù)1被刪除了。

自此整個(gè)應(yīng)用完成了。這個(gè)“用戶(hù)管理”夠簡(jiǎn)單吧~

源碼

見(jiàn) simulation-curd。


以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)