溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

restful接口規(guī)范與postman調(diào)試工具實(shí)例分析

發(fā)布時(shí)間:2022-08-09 16:19:59 來源:億速云 閱讀:135 作者:iii 欄目:web開發(fā)

這篇“restful接口規(guī)范與postman調(diào)試工具實(shí)例分析”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“restful接口規(guī)范與postman調(diào)試工具實(shí)例分析”文章吧。

1.什么是RESTful?

REST:是web服務(wù)的一種架構(gòu)風(fēng)格;使用HTTP,URI,XML,JSON,HTML等廣泛流行的標(biāo)準(zhǔn)和協(xié)議;輕量級(jí),跨平臺(tái),跨語言的架構(gòu)設(shè)計(jì);它是一種設(shè)計(jì)風(fēng)格,不是一種標(biāo)準(zhǔn),是一種思想。

RESTful:對(duì)應(yīng)的中文是rest式的;Restful web service是一種常見的rest的應(yīng)用,是遵守了rest風(fēng)格的web服務(wù);rest式的web服務(wù)是一種ROA(The Resource-Oriented Architecture)(面向資源的架構(gòu))

RESTful的本質(zhì)是一種軟件構(gòu)架風(fēng)格,核心是面向資源,解決的問題:

  • 降低開發(fā)的復(fù)雜性

  • 提高系統(tǒng)的可伸縮性

2.SOAP和REST的區(qū)別:
SOAP (Simple Object Access Protocol):交換數(shù)據(jù)一種協(xié)議規(guī)范,是一種輕量的、簡(jiǎn)單的、基于XML的協(xié)議。
REST (Representational State Transfer):一種軟件架構(gòu)風(fēng)格,可以降低開發(fā)的復(fù)雜性,提高系統(tǒng)的可伸縮性。

效率和易用性
SOAP:由于各種需求不斷擴(kuò)充其本身協(xié)議的內(nèi)容,導(dǎo)致在SOAP處理方面的性能有所下降。同時(shí)在易用性方面以及學(xué)習(xí)成本上也有所增加。
RESTful:由于其面向資源接口設(shè)計(jì)以及操作抽象簡(jiǎn)化了開發(fā)者的不良設(shè)計(jì),同時(shí)也最大限度的利用了Http最初的應(yīng)用協(xié)議設(shè)計(jì)理念。

安全性
RESTful對(duì)于資源型服務(wù)接口來說很合適,同時(shí)特別適合對(duì)于效率要求很高,但是對(duì)于安全要求不高的場(chǎng)景。
SOAP的成熟性可以給需要提供給多開發(fā)語言的,對(duì)于安全性要求較高的接口設(shè)計(jì)帶來便利。
總之:
安全性: SOAP會(huì)好于REST;
效率和易用性: REST更勝一籌;
成熟度:總的來說SOAP在成熟度上優(yōu)于REST。

3.如何設(shè)計(jì)RESTful API
資源路徑:在RESTful架構(gòu)中,每個(gè)網(wǎng)址代表一種資源,所以網(wǎng)址中不能有動(dòng)詞,只能有名詞。一般來說API中的名詞應(yīng)該使用復(fù)數(shù)。

HTTP動(dòng)詞:對(duì)于資源的操作( CURD ) ,由HTTP動(dòng)詞(謂詞)表示。

  • GET :從服務(wù)器取出資源(一項(xiàng)或多項(xiàng))。

  • POST:在服務(wù)器新建一個(gè)資源。

  • PUT:在服務(wù)器更新資源(客戶端提供改變后的完整資源)。

  • DELETE :從服務(wù)器刪除資源。

我們以動(dòng)物園(zoo)舉個(gè)例子(包括各種動(dòng)物和雇員的信息):

https://api.example.com/v1/zoos //動(dòng)物園資源
https://api.example.com/v1/animals //動(dòng)物資源
https://api.example.com/v1/employees //雇員資源
  • POST /zoos :新建一個(gè)動(dòng)物園

  • GET /zoos/ID :獲取某個(gè)指定動(dòng)物園的信息

  • PUT /zoos/ID:更新某介指定動(dòng)物園的信息

  • DELETE /zoos/D:刪除某個(gè)動(dòng)物園

過濾信息

  • ?limit=10:指定返回記錄的數(shù)量

  • ?offset=10:指定返回記錄的開始位置。

  • ?page=2&per_page=100:指定第幾頁,以及每頁的記錄數(shù)。

  • ?sortby=name&order=asc:指定返回結(jié)果按照哪個(gè)屬性排序,以及排序順序。

  • ?animal_type_id=1:指定篩選條件

狀態(tài)碼

  • 200 (OK)-如果現(xiàn)有資源已被更改

  • 201 ( created )-如果新資源被創(chuàng)建

  • 202 ( accepted )-已接受處理請(qǐng)求但尚未完成(異步處理)

  • 301 (Moved Permanently )-資源的URI被更新

  • 303 ( See Other )-其他(如,負(fù)載均衡)

  • 400 ( bad request )-指代壞請(qǐng)求

  • 404 (not found )-資源不存在

  • 406 (not acceptable )-服務(wù)端不支持所需表示

  • 409 (conflict)-通用沖突

  • 412 (Precondition Failed )-前置條件失敗(如執(zhí)行條件更新時(shí)的沖突)

  • 415 (unsupported media type )-接受到的表示不受支持

  • 500 (internal server error )-通用錯(cuò)誤響應(yīng)

  • 503 (Service Unavailable )-服務(wù)當(dāng)前無法處理請(qǐng)求

錯(cuò)誤處理
返回的信息中將error作為鍵名,出錯(cuò)信息作為鍵值。

{
 error: “Invalid API key”
 }

返回結(jié)果

  • GET /collection:返回資源對(duì)象的列表(數(shù)組)

  • GET /collection/resource:返回單個(gè)資源對(duì)象

  • POST /collection:返回新生成的資源對(duì)象

  • PUT /collection/resource:返回完整的資源對(duì)象

  • PATCH /collection/resource:返回完整的資源對(duì)象

  • DELETE /collection/resource:返回一個(gè)空文檔

4.REST風(fēng)格的接口測(cè)試流程
我們直接用一張圖來介紹吧
restful接口規(guī)范與postman調(diào)試工具實(shí)例分析5.代碼編寫和Postman測(cè)試
工具:idea,mysql數(shù)據(jù)庫,Postman
數(shù)據(jù)庫表數(shù)據(jù):
restful接口規(guī)范與postman調(diào)試工具實(shí)例分析
實(shí)體類:

@Data
@ApiModel("用戶實(shí)體類")
public class User extends Model<User> implements Serializable {
    @ApiModelProperty("用戶id")
    @NotNull(message = "用戶id不能為空")
    private Integer id;

    @NotBlank(message = "用戶名不能為空")
    @ApiModelProperty("用戶名")
    private String name;

    @Min(1)
    @Max(100)
    @ApiModelProperty("用戶年齡")
    private Integer age;

    @NotEmpty(message = "郵箱不能為空")
    @ApiModelProperty("用戶郵箱")
    @Email
    private String email;

    @ApiModelProperty("0:未刪除 1:已刪除")
    @TableLogic
    private Integer deleted;

    @NotBlank(message = "密碼不能為空")
    @ApiModelProperty("用戶密碼")
    private String password;
    }

controller層的代碼(service層省略):

@Api(tags = "用戶管理")
@RestController
@RequestMapping("/MyWebsite/user")
public class UserController {
    @Autowired
    private UserServiceImpl userServiceimpl;

   @ApiOperation(value = "新增用戶")
    @PostMapping
    public int insertUser(User user) {

        System.out.println("新增成功");

        return userServiceimpl.insertUser(user);
    }

    @ApiOperation(value = "修改用戶信息")
    @PutMapping
    public void updateUser(@RequestBody @Valid User user) {

        userServiceimpl.updateUser(user);

        System.out.println("修改成功");
    }

    @ApiOperation(value = "刪除用戶", notes = "根據(jù)id刪除用戶")
    @DeleteMapping("/{id}")
    public int deleteUser(@ApiParam("用戶id") @PathVariable @Valid Integer id) {

        System.out.println("刪除成功");

        return userServiceimpl.deleteUser(id);
    }

    @ApiOperation(value = "查詢所有用戶")
    @GetMapping
    public List<User> allUser() {

        System.out.println("查詢成功");

        return userServiceimpl.allUser();
    }

    @ApiOperation(value = "id查詢用戶")
    @GetMapping("/{id}")
    public User selectById(@PathVariable("id") String id) {
        return userServiceimpl.selectById(id);
    }
}

利用Postman測(cè)試(url路徑要對(duì)應(yīng)上):
查詢所有用戶:http://localhost:8081/MyWebsite/user
Header:Content-Type=application/json
Body:空
restful接口規(guī)范與postman調(diào)試工具實(shí)例分析
查詢成功!
根據(jù)id查詢:
restful接口規(guī)范與postman調(diào)試工具實(shí)例分析
查詢成功!
新增用戶
restful接口規(guī)范與postman調(diào)試工具實(shí)例分析
查看數(shù)據(jù)庫新增成功!
restful接口規(guī)范與postman調(diào)試工具實(shí)例分析
修改用戶信息(修改id為7的姓名和年齡):
restful接口規(guī)范與postman調(diào)試工具實(shí)例分析
查看數(shù)據(jù)庫修改成功!
restful接口規(guī)范與postman調(diào)試工具實(shí)例分析
根據(jù)id刪除用戶
restful接口規(guī)范與postman調(diào)試工具實(shí)例分析
查看數(shù)據(jù)庫刪除成功?。╠eleted=1)
可能你的是直接刪除了整一條數(shù)據(jù)
restful接口規(guī)范與postman調(diào)試工具實(shí)例分析
當(dāng)查詢或更新或刪除不存在的數(shù)據(jù)時(shí)(或者數(shù)據(jù)不合法),都是執(zhí)行失敗的
還有其他接口,例如刪除所有等接口,這里不一一測(cè)試了

以上就是關(guān)于“restful接口規(guī)范與postman調(diào)試工具實(shí)例分析”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI