Java開發中RestFul服務介面規範
REST介紹
representational State Transfer (REST) 是一種架構原則,其中將 web 服務視為資源,可以由其 URL 唯一標識。RESTful Web 服務的關鍵特點是明確使用 HTTP 方法來表示不同的操作的呼叫。
REST 的基本設計原則對典型 CRUD 操作使用 HTTP 協議方法:
POST - 建立資源
GET - 檢索資源
PUT – 更新資源
DELETE - 刪除資源
REST 服務的主要優勢在於:
它們是跨平臺 (Java、.net、PHP 等)高度可重用的,因為它們都依賴基本 HTTP 協議。
它們使用基本的 XML,而不是複雜的 SOAP XML,使用非常方便。
基於 REST 的 web 服務日益成為後端企業服務整合的首選方法。與基於 SOAP 的 web 服務相比,它的程式設計模型簡單,而本機 XML(而不是 SOAP )的使用減少了序列化和反序列化過程的複雜性,並且不再需要其他作用相同的第三方庫。
編寫目的
編寫本文的目的是為了規範專案系統功能進行模組化、服務化,將使用者的操作以服務的方式提供。系統與系統之間遵循服務規範,將系統與系統之間的互動轉為定製化服務互動,以實現系統與系統之間的整合。
編寫原則
- 可定址性(Addressability)REST 中的所有東西都基於資源 的概念。資源與 OOP 中的物件或其他名詞不同,它是一種抽象,必須可以通過 URI 定址或訪問。
- 介面一致性(Interface uniformity)與 SOAP 或其他標準不同,REST 要求用來操縱資源的方法或動詞不是任意的。這意味著 RESTful 服務的開發人員只能使用 HTTP 支援的方法,比如 GET、PUT、POST、DELETE 等等。因此不需要使用 WSDL 等服務描述語言。
- 無狀態(Statelessness)為了增強可伸縮性,伺服器端不儲存客戶機的狀態資訊。這使伺服器不與特定的客戶機相繫結,負載平衡變得簡單多了。這還讓伺服器更容易監視、更可靠。
- 具象(Representational)客戶機總是與資源的某種具象互動,絕不會直接與資源本身互動。同一資源還可以有多個具象。理論上說,持有資源的具象的任何客戶機應該有操縱底層資源的足夠資訊。
- 連通性(Connectedness)任何基於 REST 的系統都應該預見到客戶機需要訪問相關的資源,應該在返回的資源具象中包含這些資源。例如,可以以超連結的形式包含特定 RESTful 服務的操作序列中的相關步驟,讓客戶機可以根據需要訪問它們。基於 REST 的 Web 服務日益成為後端企業服務整合的
GET,DELETE,PUT和POST的典型用法
GET用法
安全且冪等
獲取表示
變更時獲取表示(快取)
200(OK) - 表示已在響應中發出
204(無內容) - 資源有空表示
301(Moved Permanently) - 資源的URI已被更新
303(See Other) - 其他(如,負載均衡)
304(not modified)- 資源未更改(快取)
400 (bad request)- 指代壞請求(如,引數錯誤)
404 (not found)- 資源不存在
406 (not acceptable)- 服務端不支援所需表示
500 (internal server error)- 通用錯誤響應
503 (Service Unavailable)- 服務端當前無法處理
POST用法
|
PUT用法
|
DELETE用法
|
Java開發中RestFul用法舉例
//@RestController 代替 @Controller,省略以後的 @ResponseBody
@RestController
@RequestMapping("/student")
public class StudentController {
@Autowired
private StudentService studentservice;
/**
* 顯示所有
* url:"http://localhost/student/findall"
*
* @return
*/
@RequestMapping(value = "/findall")
public List<Student> findAllStudent() {
return studentservice.findAllStudent();
}
/**
* 查詢 restful 風格
* url:"http://localhost/student/findone/1"
*
* @param id
* @return
*/
// == @RequestMapping(value = "/findone/{id}", method = RequestMethod.GET)
@GetMapping("/findone/{id}")
public Student findStudentRestful(@PathVariable("id") Integer id) {
return studentservice.findStudent(id);
}
/**
* 刪除 restful 風格
* url:"http://localhost/student/deleteone/4"
* 注意無法通過瀏覽器的連結來模擬檢驗,可以通過 jquery的 $.ajax方法,並type="delete"
*
* @param id
*/
// == @RequestMapping(value = "/deleteone/{id}", method = RequestMethod.DELETE)
@DeleteMapping("/deleteone/{id}")
public void deleteStudentRestful(@PathVariable("id") Integer id) {
studentservice.deleteStudent(id);
}
/**
* 增加 restful 風格
* url:"http://localhost/student/addone"
* 通過<form>表單模擬驗證
*
* @param student
*/
// == @RequestMapping(value="/addone",method=RequestMethod.POST)
@PostMapping("/addone")
public void addStudentRestful(Student student) {
studentservice.addStudent(student);
}
/**
* 修改 restful 風格
* url:"http://localhost/student/updateone"
* 驗證:可以通過 jquery的 $.ajax方法,並type="put",同時注意data形式——A=a&B=b&C=c
*
* @param student
*/
// == @RequestMapping(value="/addone",method=RequestMethod.PUT)
@PutMapping("/updateone")
public void updateStudentRestful(Student student) {
studentservice.updateStudent(student);
}
}
相關文章
- java JAX-RS快速開發RESTful服務JavaREST
- restful介面設計規範總結REST
- RESTful 介面設計規範 筆記REST筆記
- API介面開發規範API
- 使用CXF開發RESTFul服務REST
- Java開發規範(效能提升)更新中Java
- restFul介面設計規範[僅供參考]REST
- 介面開發-restfulREST
- JAVA後端開發規範Java後端
- Restful介面規約REST
- RESTful 介面設計規範與mock的完美結合RESTMock
- 基於工程經驗的『RESTful介面設計規範』REST
- 用 Go 快速開發一個 RESTful API 服務GoRESTAPI
- Flask RESTful Web服務的開發套路總結FlaskRESTWeb
- RESTful API 設計規範RESTAPI
- 前端開發規範:命名規範、html規範、css規範、js規範前端HTMLCSSJS
- RESTful API 中的 Status code 是否要遵守規範RESTAPI
- 開發規範
- drf : web應用模式,RESTful API規範,介面測試工具:PostmanWeb模式RESTAPIPostman
- Restful規範-APIView原始碼分析RESTAPIView原始碼
- Restful API 的設計規範RESTAPI
- MySQL資料庫規範 (設計規範+開發規範+操作規範)MySql資料庫
- Java中的命名規範。Java
- redis開發規範Redis
- 前端開發規範前端
- MySQL 開發規範MySql
- 規範開發工具
- INFORMATICA 開發規範ORM
- MySQL開發規範MySql
- Redis 開發規範Redis
- react 開發規範React
- oracle開發規範Oracle
- lisp 開發規範。Lisp
- php 開發規範PHP
- Git 開發規範Git
- 搭建 Restful Web 服務RESTWeb
- RESTful API定義及使用規範RESTAPI
- 阿里巴巴Java開發規範手冊阿里Java