电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

PHP使用Swagger生成好看的API文檔

瀏覽:148日期:2022-06-06 16:53:10
目錄
  • 一、安裝swagger-php
  • 二、設(shè)置一個輸出api文檔數(shù)據(jù)的接口
  • 三、使用
  • 四、顯示swagger ui

PHP使用Swagger生成好看的API文檔不是不可能,而是非常簡單。

首先本人使用Laravel框架,所以在Laravel上安裝swagger-php。

一、安裝swagger-php

composer require zircote/swagger-php

swagger-php提供了命令行工具,所以可以全局安裝,然后把工具的路徑加到PATH里去。

composer global require zircote/swagger-php

然后把zircote/swagger-php/bin 目錄加到PATH里。這個東西本人用不到,就不研究了。

二、設(shè)置一個輸出api文檔數(shù)據(jù)的接口

a)、生成一個控制器: SwaggerController

b)、添加一個方法: getJSON()

    public function getJSON()
    {
$swagger = \OpenApi\Generator::scan([app_path("Http/Controllers/")]);
return response()->json($swagger, 200);
    }

有的文章里寫 \Swagger\scan(),但我這里報錯,說找不到這個類。查了官方文檔,要用 \OpenApi\Generator::scan()。有可能是新版本做了修改。

c)、設(shè)置路由

api.php 或者 web.php都行,路徑不同而已。本人選擇api.php。所以訪問路徑要加個前綴:/api。

Route::group(["prefix" => "swagger"], function () {
    Route::get("json", [\App\Http\Controllers\SwaggerController::class, "getJSON"]);
});

d)、測試訪問

訪問 http://localhost:8000/api/swagger/json 如果看到頁面正常輸出json,說明配置成功了。不然就按錯誤提示一項項去修改吧。

三、使用

GET方法

    /** 
     * @OA\Get(
     *     tags={"數(shù)據(jù)管理"},
     *     summary="數(shù)據(jù)查詢",
     *     path="/api/data/search",
     *     @OA\Response(response="200", description="Display a listing of projects."),
     *     @OA\Parameter(
     * description="數(shù)據(jù)名稱",
     * in="query",
     * name="name",
     * required=false,
     * @OA\Schema(type="string"),
     *     ),
     *     @OA\Parameter(
     * description="狀態(tài)",
     * in="query",
     * name="status",
     * required=false,
     * @OA\Schema(type="integer"),
     *     ),
     *     @OA\Parameter(
     * description="每頁記錄數(shù)",
     * in="query",
     * name="page-size",
     * required=false,
     * @OA\Schema(type="integer"),
     *     ),
     *     @OA\Parameter(
     * description="當(dāng)前頁碼",
     * in="query",
     * name="current-page",
     * required=false,
     * @OA\Schema(type="integer"),
     *     ),
     * )
     */

這里面:

in 表示該參數(shù)出現(xiàn)在哪里。 query的話就是用&拼在url后面; path 類似于 /api/data/search/{param} ; header就是包含在 request header里;cookie 自然是放在cookie里。

這個版本里formData, body這些都沒有了。

required 看名字就知道 true是必填項,false是選填項。

POST方法

    /** 
     * @OA\Post(
     *     tags={"數(shù)據(jù)管理"},
     *     summary="添加數(shù)據(jù)",
     *     path="/api/data",
     *     @OA\Response(response="200", description="Display a listing of projects."),
     *     @OA\RequestBody(
     * @OA\MediaType(
     *     mediaType="x-www-form-urlencoded",
     *     @OA\Schema(
     * ref="#/components/schemas/DataModel",
     *     ),
     * ),
     *     ),
     * )
     */

因為本人的前端代碼post都是表單提交,所以這里的post方法要用@OA\RequestBody。

@OA\Parameter是參數(shù),是可以放到url上,但是post的表單提交,數(shù)據(jù)是不出現(xiàn)在url上的。

@OA\MediaType 這個: x-www-form-urlencoded 表單提交;application/json 提交json格式的數(shù)據(jù);multipart/form-data 文件上傳;

     *     @OA\Schema(
     * ref="#/components/schemas/DataModel",
     *     ),

這個是關(guān)聯(lián)到一個已經(jīng)定義好的schema上,省得使用相同數(shù)據(jù)的每個接口注釋里都寫一遍。

這里也可以單獨寫:

 * @OA\Schema(
 *   required={"name", "code"},
 *   @OA\Property(property="name", type="string", title="姓名", description="這是姓名"),
 *   @OA\Property(property="code", type="string", title="代碼", description="這是代碼"),
 *   @OA\Property(property="phone", type="string", title="電話", description="這是電話"),
 * ),

上面這樣,有多少個參數(shù)就寫多少個@OA\Property。

這里的required是個數(shù)組,寫在里面的都是必填項。

其它方法都差不多,以后有用到了再記錄。

四、顯示swagger ui

下載swagger ui的代碼: https://github.com/swagger-api/swagger-ui/releases

解壓后,把目錄里的dist目錄,復(fù)制到laravel的public目錄下面,改名為swagger-ui。文件名隨便取,不沖突就行。

找開這個swagger-ui目錄下的swagger-initializer.js,內(nèi)容大概如下:

window.onload = function() {
  //<editor-fold desc="Changeable Configuration Block">
  // the following lines will be replaced by docker/configurator, when it runs in a docker-container
  window.ui = SwaggerUIBundle({
    url: "/api/swagger/json",
    dom_id: "#swagger-ui",
    deepLinking: true,
    presets: [
      SwaggerUIBundle.presets.apis,
      SwaggerUIStandalonePreset
    ],
    plugins: [
      SwaggerUIBundle.plugins.DownloadUrl
    ],
    layout: "StandaloneLayout"
  });
  //</editor-fold>
};

主要是改 url這項。改成前面設(shè)的路由地址。這里是 "/api/swagger/json"。

完成后訪問 http://localhost:8000/swagger-ui/ 就能看到swagger形成的api文檔了。

到此這篇關(guān)于PHP使用Swagger生成好看的API文檔的文章就介紹到這了,更多相關(guān)PHP Swagger內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: PHP
主站蜘蛛池模板: 选宝石船-陆地水上开采「精选」色选机械设备-青州冠诚重工机械有限公司 | 继电器模组-IO端子台-plc连接线-省配线模组厂家-世麦德 | 企业管理培训,企业培训公开课,企业内训课程,企业培训师 - 名课堂企业管理培训网 | 学生作文网_中小学生作文大全与写作指导 | 山东集装箱活动房|济南集装箱活动房-济南利森集装箱有限公司 | 密集架-手摇-智能-移动-价格_内蒙古档案密集架生产厂家 | 合肥地磅_合肥数控切割机_安徽地磅厂家_合肥世佳电工设备有限公司 | 基本型顶空进样器-全自动热脱附解吸仪价格-AutoHS全模式-成都科林分析技术有限公司 | 石牌坊价格石牌坊雕刻制作_石雕牌坊牌楼石栏杆厂家_山东嘉祥石雕有限公司 | 集装箱展厅-住人集装箱住宿|建筑|房屋|集装箱售楼处-山东锐嘉科技工程有限公司 | 恒温恒湿试验箱_高低温试验箱_恒温恒湿箱-东莞市高天试验设备有限公司 | 智能案卷柜_卷宗柜_钥匙柜_文件流转柜_装备柜_浙江福源智能科技有限公司 | CCE素质教育博览会 | CCE素博会 | 教育展 | 美育展 | 科教展 | 素质教育展 | 档案密集架,移动密集架,手摇式密集架,吉林档案密集架-厂家直销★价格公道★质量保证 | 东风体检车厂家_公共卫生体检车_医院体检车_移动体检车-锦沅科贸 | 精密模具加工制造 - 富东懿 | 数码听觉统合训练系统-儿童感觉-早期言语评估与训练系统-北京鑫泰盛世科技发展有限公司 | 对辊破碎机_四辊破碎机_双齿辊破碎机_华盛铭重工 | 数显恒温培养摇床-卧式/台式恒温培养摇床|朗越仪器 | 济南宣传册设计-画册设计_济南莫都品牌设计公司 | 刘秘书_你身边专业的工作范文写作小秘书 | 污水处理设备-海普欧环保集团有限公司| 北京遮阳网-防尘盖土网-盖土草坪-迷彩网-防尘网生产厂家-京兴科技 | 鲸鱼视觉 -数字展厅多媒体互动展示制作公司 | 德国进口电锅炉_商用电热水器_壁挂炉_电采暖器_电热锅炉[德国宝] | 顶空进样器-吹扫捕集仪-热脱附仪-二次热解吸仪-北京华盛谱信仪器 | 油漆辅料厂家_阴阳脚线_艺术漆厂家_内外墙涂料施工_乳胶漆专用防霉腻子粉_轻质粉刷石膏-魔法涂涂 | 集装袋吨袋生产厂家-噸袋廠傢-塑料编织袋-纸塑复合袋-二手吨袋-太空袋-曹县建烨包装 | 济南办公室装修-厂房装修-商铺装修-工装公司-山东鲁工装饰设计 | 武汉刮刮奖_刮刮卡印刷厂_为企业提供门票印刷_武汉合格证印刷_现金劵代金券印刷制作 - 武汉泽雅印刷有限公司 | 细胞染色-流式双标-试剂盒免费代做-上海研谨生物科技有限公司 | 齿辊分级破碎机,高低压压球机,立式双动力磨粉机-郑州长城冶金设备有限公司 | 运动木地板厂家,篮球场木地板品牌,体育场馆木地板安装 - 欧氏运动地板 | 浙江华锤电器有限公司_地磅称重设备_防作弊地磅_浙江地磅售后维修_无人值守扫码过磅系统_浙江源头地磅厂家_浙江工厂直营地磅 | 焊锡丝|焊锡条|无铅锡条|无铅锡丝|无铅焊锡线|低温锡膏-深圳市川崎锡业科技有限公司 | J.S.Bach 圣巴赫_高端背景音乐系统_官网 | 滚筒线,链板线,总装线,流水线-上海体能机电有限公司 | 泰国试管婴儿_泰国第三代试管婴儿费用|成功率|医院—新生代海外医疗 | 耐磨焊丝,堆焊焊丝,耐磨药芯焊丝,碳化钨焊丝-北京耐默公司 | 河南橡胶接头厂家,河南波纹补偿器厂家,河南可曲挠橡胶软连接,河南套筒补偿器厂家-河南正大阀门 | 丹尼克尔拧紧枪_自动送钉机_智能电批_柔性振动盘_螺丝供料器品牌 |