在管理系統(tǒng)中有幾個(gè)常用的 CURD 操作,接下來(lái)我們會(huì)對(duì)它們進(jìn)行嘗試,來(lái)模擬一個(gè)“用戶(hù)管理”。
在服務(wù)端,我們要提供 REST 風(fēng)格的 API。
先創(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;
}
}
新建一個(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ā)完畢。
為了快速測(cè)試接口,可以用第三方 REST 客戶(hù)端測(cè)試程序,我這里用的是 RESTClient 插件,可以在火狐中安裝使用。
我們先增加一個(gè)用戶(hù)對(duì)象,使用 JSON 格式:
{
"userId": 1,
"age": 28,
"name": "waylau.com"
}
提示報(bào)錯(cuò):415
未支持媒體格式的錯(cuò)誤。
由于我們?cè)谛略龅慕涌诶锩嬖O(shè)置的是
@Consumes(MediaType.APPLICATION_JSON)
規(guī)定只接收 JSON 格式,而 默認(rèn)的 “Conten-Type” 是“text/html”所以在還需要在 header 里設(shè)置一下 為 “application/json”:
就可以了。我們?cè)谔砑右粋€(gè)用戶(hù)對(duì)象
{
"userId": 2,
"age": 24,
"name": "www.waylau.com"
}
響應(yīng)的數(shù)據(jù)里面就能看到我們的添加的用戶(hù)了。
修改用戶(hù)1 的數(shù)據(jù):
{
"userId": 1,
"age": 24,
"name": "小柳哥"
}
用 PUT 請(qǐng)求:
在返回的數(shù)據(jù)里面可以看到用戶(hù)1 被修改
在根據(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
與上面類(lèi)似,也是用到了@Path("{id}")
我們看到用戶(hù)1被刪除了。
自此整個(gè)應(yīng)用完成了。這個(gè)“用戶(hù)管理”夠簡(jiǎn)單吧~
見(jiàn) simulation-curd
。
更多建議: