日本xxxx18视频在线观看-日本xxxx1819-日本xxxwww在线观看-日本xxx-日本xx-日本www在线视频

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

[點晴永久免費OA]Restful API接口規范

admin
2022年4月18日 16:6 本文熱度 1913

REST:英文representational state transfer直譯為表現層狀態轉移,或者表述性狀態轉移;Rest是web服務的一種架構風格,一種設計風格,是一種思想;同時Rest不是針對某一種編程語言的。

以webService為例通俗解釋。

非Rest設計,以往我們都會這么寫:

http://localhost:8080/admin/getUser (查詢用戶)

http://localhost:8080/admin/addUser (新增用戶)

http://localhost:8080/admin/updateUser (更新用戶)

http://localhost:8080/admin/deleteUser (刪除用戶)

總結:以不同的URL(主要為使用動詞)進行不同的操作。

Rest架構:

GET http://localhost:8080/admin/user (查詢用戶)

POST http://localhost:8080/admin/user (新增用戶)

PUT http://localhost:8080/admin/user (更新用戶)

delete http://localhost:8080/admin/user (刪除用戶)

總結:URL只指定資源,以HTTP方法動詞進行不同的操作。用HTTP STATUS/CODE定義操作結果。

Restful:遵守了rest風格的web服務便可稱為Restful。

為什么需要Restful?

URL具有很強可讀性的,具有自描述性

規范化請求過程和返回結果

資源描述與視圖的松耦合

可提供OpenAPI,便于第三方系統集成,提高互操作性

提供無狀態的服務接口,降低復雜度,可提高應用的水平擴展性

/版本號/資源路徑

/v1/tags/{tag_id}

/v1/users?[&keyword=xxx][&enable=1][&offset=0][&limit=20]

1、版本號

命名版本號可以解決版本不兼容問題,在設計 RESTful API 的一種實用的做法是使用版本號。一般情況下,我們會在 url 中保留舊版本號,并同時兼容多個版本

【GET】 /v1/users/{user_id} // 版本 v1 的查詢用戶列表的 API 接口

【GET】 /v2/users/{user_id} // 版本 v2 的查詢用戶列表的 API 接口

2、資源路徑

URI 不能包含動詞,只能是名詞(命名名詞的時候,要使用小寫、數字及下劃線來區分多個單詞)。

資源的路徑應該從根到子依次如下:

/{resources}/{resource_id}/{sub_resources}/{sub_resource_id}/{sub_resource_property}

【POST】 /v1/users/{user_id}/roles/{role_id} // 添加用戶的角色

有的時候,當一個資源變化難以使用標準的 RESTful API 來命名,可以考慮使用一些特殊的 actions 命名。

/{resources}/{resource_id}/actions/{action}

【PUT】 /v1/users/{user_id}/password/actions/modify // 密碼修改

3、請求方式

【GET】 /users # 查詢用戶信息列表

【GET】 /users/1001 # 查看某個用戶信息

【POST】 /users # 新建用戶信息

【PUT】 /users/1001 # 更新用戶信息(全部字段)

【PATCH】 /users/1001 # 更新用戶信息(部分字段)

【delete】 /users/1001 # 刪除用戶信息

【PATCH】一般不用,用【PUT】

4、查詢參數

RESTful API 接口應該提供參數,過濾返回結果。

【GET】 /{version}/{resources}/{resource_id}?offset=0&limit=20

5、響應參數

JSON格式(code、data、msg)

6、狀態碼

使用適合的狀態碼很重要,而不應該全部都返回狀態碼 200

狀態碼,可根據以下標準按照項目擴展自身狀態碼:

200~299段 表示操作成功:

200 操作成功,正常返回

201 操作成功,已經正在處理該請求

300~399段 表示參數方面的異常

300 參數類型錯誤

301 參數格式錯誤

302 參數超出正常取值范圍

303 token過期

304 token無效

400~499段 表示請求地址方面的異常:

400 找不到地址

500~599段 表示內部代碼異常:

500 服務器代碼異常

7、完整事例
UserController.java
@RestController(/v1)

@API(tag=”用戶相關接口”)
public class UserController {
 
    @Autowired
    private UserJPARepository userJPARepository;
    /**
     * 查詢用戶列表
     * @return
     */
    @GetMapping(value = "/user")
    public List<User> findUserList(){
        return userJPARepository.findAll();
    }
    /**
     * 根據Id查詢一個用戶
     * @param id
     * @return
     */
    @GetMapping(value = "/user/query/{id}")
    public User findUserOne(@PathVariable("id") Integer id){
        return userJPARepository.findOne(id);
    }
    /**
     * 添加用戶
     * @param name
     * @param age
     * @param country
     * @return
     */
    @PostMapping(value = "/user")
    public User addUser(@RequestParam("name") String name, @RequestParam("age") int age,
                        @RequestParam("country") String country){
        User user = new User();
        user.setName(name);
        user.setAge(age);
        user.setCountry(country);
        return userJPARepository.save(user);
    }
    /**
     * 刪除用戶
     * @param id  用戶編號
     * @return
     */
    @deleteMapping(value = "/user/{id}")
    public  List<User> deleteUser(@PathVariable("id") Integer id){
        userJPARepository.delete(id);
        return userJPARepository.findAll();
    }
    /**
     * 更新用戶
     * @param id
     * @param name
     * @param age
     * @param country
     * @return
     */
    @PutMapping(value = "/user/{id}")
    public User updateUser(@PathVariable("id") Integer id, @RequestParam("name") String name,
                           @RequestParam("age") int age, @RequestParam("country") String country){
        User user = userJPARepository.findById(id);
        user.setName(name);
        user.setAge(age);
        user.setCountry(country);
        return userJPARepository.save(user);
    }
    /**
     * 根據國家查詢用戶
     * @param country
     * @return
     */
    @GetMapping(value = "/user/{country}")
    public List<User> findByCountry(@PathVariable("country") String country){
        return userJPARepository.findByCountry(country);
    }
}

 


該文章在 2022/4/18 16:06:58 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 乱码一区二区三区 | 国产在线观看欧美乱码 | 日韩xxxx高清在线观看 | 日韩一区二区三区自拍偷拍 | 日本中文字幕有码在线视频 | 国产美女www爽爽爽 91午夜理伦私 | 国产高清极品美女 | 99久看免费视频 | 国产精品午夜自在在线精品 | 国内免费视频一区二区三区 | 日韩综合一区二区三区 | 欧美videos另类极品 | 国产一区二区三区自产 | 日韩欧美精品一级特黄大片 | 99在线这精品视频 | 国产日韩欧美一区二 | 国产在线视欧美亚综合 | 99视频久 | 国产乱码精品一区二区三 | 日韩综合国产传媒一区 | 国产日本欧美一区二区第一页 | 国产一级a爱片在线观看视频 | 日本中文字幕免费 | 欧美国产中文动漫日韩欧美在线 | 日本欧美在线播放中文字幕 | 国产婷婷综合在 | 被窝网国产在线视频色 | 欧美高清视频www夜 日本精品一区二区在线观看 | 91短视频视频 | 2025最新最热门影视剧 | 日本不卡一区二区三区不卡高 | 日本在线卡一卡二卡3卡四卡 | 另类专区国产在 | 国产性一 | 97精品一区二区视频在线观 | 日本免费一区二区三区高清视频 | 国产精品永久免费自在线观 | 亚洲日本在线视频一区 | 777午夜精| 日本一区二区三区高清视频在线 | 日本日本乱码伦视频免费 |