在管理系統(tǒng)中有幾個常用的 CURD 操作,接下來我們會對它們進行嘗試,來模擬一個“用戶管理”。
在服務端,我們要提供 REST 風格的 API。
先創(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.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
未支持媒體格式的錯誤。
由于我們在新增的接口里面設置的是
@Consumes(MediaType.APPLICATION_JSON)
規(guī)定只接收 JSON 格式,而 默認的 “Conten-Type” 是“text/html”所以在還需要在 header 里設置一下 為 “application/json”:
就可以了。我們在添加一個用戶對象
{
"userId": 2,
"age": 24,
"name": "www.waylau.com"
}
響應的數(shù)據(jù)里面就能看到我們的添加的用戶了。
修改用戶1 的數(shù)據(jù):
{
"userId": 1,
"age": 24,
"name": "小柳哥"
}
用 PUT 請求:
在返回的數(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
與上面類似,也是用到了@Path("{id}")
我們看到用戶1被刪除了。
自此整個應用完成了。這個“用戶管理”夠簡單吧~
見 simulation-curd
。
更多建議: