首頁 > web前端 > js教程 > 主體

restful介面規範與postman調試工具介紹

藏色散人
發布: 2022-08-09 15:39:12
轉載
1535 人瀏覽過

最近學習了RESTful介面規範,並用Postman作了介紹,在這裡記錄一下有關RESTful介面規範:

##1.什麼是RESTful?

REST:是web服務的一種架構風格;使用HTTP,URI,XML,JSON,HTML等廣泛流行的標準和協定;輕量級,跨平台,跨語言的架構設計;它是一種設計風格,不是一種標準,是一種思想。

RESTful:對應的中文是rest式的;Restful web service是一種常見的rest的應用,是遵守了rest風格的web服務;rest式的web服務是一種ROA(The Resource- Oriented Architecture)(資源導向的架構)【建議:

web前端

RESTful的本質是一種軟體架構風格,核心是面向資源,解決的問題:

    降低開發的複雜性
  • 提高系統的可擴展性

#2.SOAP和REST的差異: SOAP ( Simple Object Access Protocol):交換資料一種協定規範,是一種輕量的、簡單的、基於XML的協定。
REST (Representational State Transfer):一種軟體架構風格,可以降低開發的複雜性,提高系統的可擴展性。

效率與易用性
SOAP:由於各種需求不斷擴充其本身協定的內容,導致在SOAP處理方面的效能有所下降。同時在易用性方面以及學習成本上也有所增加。
RESTful:由於其面向資源介面設計以及操作抽象簡化了開發者的不良設計,同時也最大限度的利用了Http最初的應用協定設計理念。

安全性
RESTful對於資源型服務介面來說很合適,同時特別適合對於效率要求很高,但是對於安全要求不高的場景。
SOAP的成熟性可以為需要提供給多開發語言的,對於安全性要求較高的介面設計帶來便利。 總之:

安全性: SOAP會好於REST;
效率與易用性: REST更勝一籌;
成熟度:總的來說SOAP在成熟度上優於REST。

3.如何設計RESTful API
資源路徑:在RESTful架構中,每個網址代表一個資源,所以網址中不能有動詞,只能有名詞。一般來說API中的名詞要使用複數。

HTTP動詞:對於資源的操作( CURD ) ,由HTTP動詞(謂詞)表示。

    GET :從伺服器取出資源(一項或多項)。
  • POST:在伺服器新建一個資源。
  • PUT:在伺服器更新資源(客戶端提供改變後的完整資源)。
  • DELETE :從伺服器刪除資源。
我們以動物園(zoo)舉個例子(包括各種動物和員工的資訊):

https://api.example.com/v1/zoos //动物园资源
https://api.example.com/v1/animals //动物资源
https://api.example.com/v1/employees //雇员资源
登入後複製

    POST /zoos :新建一個動物園
  • GET /zoos/ID :取得某個指定動物園的資訊
  • PUT /zoos/ID:更新某介指定動物園的資訊
  • DELETE /zoos/D:刪除某個動物園

過濾資訊

    #?limit=10:指定傳回記錄的數量
  • ? offset=10:指定傳回記錄的開始位置。
  • ?page=2&per_page=100:指定第幾頁,以及每頁的記錄數。
  • ?sortby=name&order=asc:指定傳回結果依照哪個屬性排序,以及排序順序。
  • ?animal_type_id=1:指定篩選條件

#狀態碼

    200 (OK )-如果現有資源已被更改
  • 201 ( created )-如果新資源被創建
  • 202 ( accepted )-已接受處理請求但尚未完成(異步處理)
  • 301 (Moved Permanently )-資源的URI被更新
  • 303 ( See Other )-其他(如,負載平衡)
  • 400 ( bad request )-指稱壞請求
  • 404 (not found )-資源不存在
  • 406 (not acceptable )-服務端不支援所需表示
  • 409 (conflict)-通用衝突
  • 412 (Precondition Failed )-前置條件失敗(如執行條件更新時的衝突)
  • 415 (unsupported media type )-接受到的表示不受支持
  • 500 (internal server error )-通用錯誤回應
  • 503 (Service Unavailable )-服務目前無法處理請求

錯誤處理

###########################################################################:## # 傳回的訊息中將error作為鍵名,出錯訊息作為鍵值。 ######
{
 error: “Invalid API key”
 }
登入後複製
#########回傳結果######:###
  • GET /collection:返回资源对象的列表(数组)
  • GET /collection/resource:返回单个资源对象
  • POST /collection:返回新生成的资源对象
  • PUT /collection/resource:返回完整的资源对象
  • PATCH /collection/resource:返回完整的资源对象
  • DELETE /collection/resource:返回一个空文档

4.REST风格的接口测试流程
我们直接用一张图来介绍吧
restful介面規範與postman調試工具介紹5.代码编写和Postman测试
工具:idea,mysql数据库,Postman
数据库表数据:
restful介面規範與postman調試工具介紹
实体类:

@Data
@ApiModel("用户实体类")
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 = "根据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测试(url路径要对应上):
查询所有用户:http://localhost:8081/MyWebsite/user
Header:Content-Type=application/json
Body:空
restful介面規範與postman調試工具介紹
查询成功!
根据id查询:
restful介面規範與postman調試工具介紹
查询成功!
新增用户
restful介面規範與postman調試工具介紹
查看数据库新增成功!
restful介面規範與postman調試工具介紹
修改用户信息(修改id为7的姓名和年龄):
restful介面規範與postman調試工具介紹
查看数据库修改成功!
restful介面規範與postman調試工具介紹
根据id删除用户
restful介面規範與postman調試工具介紹
查看数据库删除成功!(deleted=1)
可能你的是直接删除了整一条数据
restful介面規範與postman調試工具介紹
当查询或更新或删除不存在的数据时(或者数据不合法),都是执行失败的
还有其他接口,例如删除所有等接口,这里不一一测试了
若有不正确的地方,欢迎指出。

以上是restful介面規範與postman調試工具介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!