正如我們討論至今認(rèn)為RESTful web服務(wù)使得重用HTTP動(dòng)詞,以確定要執(zhí)行所指定的資源(多個(gè))的操作。 下表使用HTTP動(dòng)詞常用狀態(tài)的例子。
| S.N. | HTTP方法,URI和操作 |
|---|---|
| 1 |
GET http://localhost:8080/UserManagement/rest/UserService/users 獲取用戶列表 (只讀) |
| 2 |
GET http://localhost:8080/UserManagement/rest/UserService/users/1 獲取ID為1的用戶 (只讀) |
| 3 |
PUT http://localhost:8080/UserManagement/rest/UserService/users/2 使用ID為2插入用戶 (等冪) |
| 4 |
POST http://localhost:8080/UserManagement/rest/UserService/users/2 更新ID為2的用戶 (N/A) |
| 5 |
DELETE http://localhost:8080/UserManagement/rest/UserService/users/1 刪除ID為2用戶 (等冪) |
| 6 |
OPTIONS http://localhost:8080/UserManagement/rest/UserService/users 列出Web服務(wù)支持的操作 (只讀) |
| 7 |
HEAD http://localhost:8080/UserManagement/rest/UserService/users 僅返回HTTP頭,沒有主體。 (只讀) |
下面是要考慮的重要問(wèn)題:
GET 僅是讀操作并且是安全的。
PUT 和 DELETE 操作冪等意味著他們的結(jié)果總是相同的,無(wú)論多少次,這些操作可被調(diào)用。
PUT 和 POST 動(dòng)作幾乎相同,區(qū)別僅位于在結(jié)果其中PUT操作是等冪,POST操作可能導(dǎo)致不同的結(jié)果。
讓我們來(lái)更新RESTful Web服務(wù)創(chuàng)建示例 - 第一應(yīng)用教程創(chuàng)建Web服務(wù)它可以執(zhí)行CRUD(創(chuàng)建,讀取,更新,刪除)操作。為簡(jiǎn)單起見,這里使用了一個(gè)文件I/O,以取代數(shù)據(jù)庫(kù)操作。
現(xiàn)在更新User.java,UserDao.java和UserService.java文件在com.yiibai包下。
User.java
package com.yiibai; import java.io.Serializable; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement(name = "user") public class User implements Serializable { private static final long serialVersionUID = 1L; private int id; private String name; private String profession; public User(){} public User(int id, String name, String profession){ this.id = id; this.name = name; this.profession = profession; } public int getId() { return id; } @XmlElement public void setId(int id) { this.id = id; } public String getName() { return name; } @XmlElement public void setName(String name) { this.name = name; } public String getProfession() { return profession; } @XmlElement public void setProfession(String profession) { this.profession = profession; } @Override public boolean equals(Object object){ if(object == null){ return false; }else if(!(object instanceof User)){ return false; }else { User user = (User)object; if(id == user.getId() && name.equals(user.getName()) && profession.equals(user.getProfession()) ){ return true; } } return false; } }
UserDao.java
package com.yiibai; import java上一篇:RESTful Web服務(wù)無(wú)狀態(tài)下一篇:RESTful Services Java (JAX-RS)