亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Flask如何實現swagger在線文檔與接口測試

發布時間:2022-08-05 17:03:00 來源:億速云 閱讀:260 作者:iii 欄目:開發技術

這篇文章主要介紹“Flask如何實現swagger在線文檔與接口測試”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Flask如何實現swagger在線文檔與接口測試”文章能幫助大家解決問題。

1.什么是restful

Representional State Transfer(REST):表征狀態轉移。是一種一種基于HTTP協議的架構。采用Web 服務使用標準的 HTTP 方法 (GET/PUT/POST/DELETE) 將所有 Web 系統的服務抽象為資源。

如果REST滿足一定條件(C/S、無狀態、分層系統、統一接口),則稱為REST ful。你可以理解成REST ful就是更加規范的REST。

簡單總結就是我們通過http發起一個請求,這個請求可能是get請求,可能是post請求,然后從這個請求里面獲取到我們所需要的資源。例如A系統對外暴露一個接口,該接口實現查詢用戶信息,B系統通過Http請求到A系統,然后通過這個http請求獲取到了A系統的用戶資源。

換句話說,就是我們需要實現restful,那么就得需要我們向外部暴露一個接口。

對于有Java開發經驗的人來說,就很簡單,那就是編寫一個Controller

例如如下Controller接口表示對外暴露一個接口,那么通過瀏覽器訪問這個地址,我們就能獲取到這個任務信息(瀏覽器地址訪問采用get請求方式)

<IP:端口/域名>/task/info/{taskId}

@RestController
@RequestMapping("/task")
public class TaskController {
	@GetMapping("/info/{taskId}")
	public R<TaskRes> getmTaskInfoById(@PathVariable String taskId) {
		TaskRes task = taskService.getTaskInfoById(taskId);
		return R.ok(task);
	}
}

2.swagger/openAPI能做什么

在沒有swagger之前,我們可以使用word,excel等功能來書寫接口定義文檔,但又有一個弊端。

即: 在接口改變時需要及時的同步接口文檔,否則實際的接口與接口文檔不相符,則接口文件就失去了作用,甚至會起到反作用。

比如上述接口一開始采用的是get請求,并且taskId是通過地址傳參,假設現在維護代碼的人將請求改成post,然后taskId放到請求body中,例如變成post+json的方式,但是很可能忘記維護接口文檔,導致接口文檔和實際接口不一致。

在Java中,我們可以根據在代碼中使用自定義的注解來生成接口文檔,這個在前后端分離的項目中很重要。這樣做的好處是 在開發接口時可以通過swagger 將接口文檔定義好,同時也方便以后的維護。

例如在Java中,我們可以通過如下注解:@API、@ApiModelProperty等注解來修飾我們代碼。

在python中,類似的功能叫做裝飾器

Flask如何實現swagger在線文檔與接口測試

此時訪問swagger,我們即可看到如下在線的一個文檔,這個文檔能將我們Java代碼里面的注解描述信息是保持一致的。

Flask如何實現swagger在線文檔與接口測試

Flask如何實現swagger在線文檔與接口測試

當然,Java畢竟生態很成熟,上述的原生swagger不太符合我們目前的使用習慣,因此使用如下的顯示插件

OpenAPI3 (swagger3) 訪問地址:http://127.0.0.1:9090/swagger-ui/index.html

knife4j UI 訪問地址:http://127.0.0.1:9090/doc.html

Flask如何實現swagger在線文檔與接口測試

我們可以點擊調試,即可在線測試這個接口的功能,等價于把postman這種接口測試工具集成進來了。

Flask如何實現swagger在線文檔與接口測試

3.python如何實現swagger

在flask框架中使用的swagger即為flasgger,flasgger是flask支持的swagger UI,便于調試使用flask框架搭建的web api接口

flasgger安裝

pip install flasgger

4.flasgger的使用案例

比如我們現在需要對外提供一個接口,這個接口的請求參數如下,參數格式是一個復雜的JSON格式,包含了字符串(userName),對象(userInfo),數字(age),數組(hobby),基本上這個請求參數覆蓋我們百分之99的參數需求了

Flask如何實現swagger在線文檔與接口測試

訪問地址

http://127.0.0.1:8085/apidocs/

當我們集成完畢后,打開如上地址,就能打開python版本的swagger的頁面

Flask如何實現swagger在線文檔與接口測試

可以查看Models,這個models是描述各個參數,點擊這個方法,就可以看到調用的示例,可以點擊界面的try it out,就可以進行請求調試了

Flask如何實現swagger在線文檔與接口測試

進入調試頁面,修改參數后,點擊執行(Execute)按鈕。

Flask如何實現swagger在線文檔與接口測試

如下就是此次我們調用接口返回的信息了。

Flask如何實現swagger在線文檔與接口測試

對比之前的Java版本,我們發現,畫面基本保持一致。當然了由于Java生態好,所以還有bootstrapUI或者knife4j UI(換一種UI的風格展示swagger)的支持,暫時在python中沒找到bootstrap和knife4j對python版本的swagger的支持。

Flask如何實現swagger在線文檔與接口測試

5.完整代碼

Flask如何實現swagger在線文檔與接口測試

app.py

from flask import Flask, jsonify, request
from flasgger import Swagger, swag_from
server = Flask(__name__)
Swagger(server)
server.config['JSON_AS_ASCII']=False
@server.route('/flask/flasgger/demo',methods=['POST'])
@swag_from('demo.yml')
def demo_request():
    json_data = request.json
    result = {"code":"200","msg":"SUCCES","data":{"name":"xxxxxx","age":25,"job":"python"}}
    return jsonify(result)
if __name__ == "__main__":
    server.run(port=8085,debug=True)

demo.yml

tags:
  - falsk集成swagger示例
description:
    示例flasgger進行在線文檔生成,添加用戶信息,請求參數覆蓋了常用的字符串、對象、數組、數字
parameters:
  - name: body
    in: body
    required: true
    schema:
      id: 接口參數示例
      properties:
        userName:
          type: string
          description: 用戶自己的姓名
        userInfo:
            properties:
              hobby:
                type: array
                items:
                  type: string
                description: 用戶的愛好
              age:
                type: integer
                description: 用戶年齡
responses:
  200:
     description: 添加用戶成功
     example:
  500:
     description: 添加用戶失敗
     example:

關于“Flask如何實現swagger在線文檔與接口測試”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大石桥市| 睢宁县| 汉川市| 平塘县| 正蓝旗| 滁州市| 华亭县| 郎溪县| 车险| 浏阳市| 施秉县| 日喀则市| 泊头市| 奉化市| 岳西县| 永安市| 兖州市| 万州区| 宣汉县| 上犹县| 塔河县| 吉林市| 台北市| 巴楚县| 平南县| 东台市| 杂多县| 岳阳市| 黎城县| 红河县| 长春市| 大关县| 天台县| 班戈县| 甘德县| 汾阳市| 宁乡县| 桃源县| 日喀则市| 博野县| 临湘市|