使用 Laravel-Swagger 编写接口文档(php)

使用 Laravel-Swagger 编写接口文档

Table of Contents

Swagger 文档管理

官方网站:https://swagger.io/

快速编写你的 RESTFUL API 接口文档工具,通过注释定义接口和模型,可以和代码文件放置一起,也可以单独文件存放。

优势

  • 通过代码注解定义文档,更容易保持代码文档的一致性
  • 模型复用,减少文档冗余,带来更可靠的文档
  • 提供客户端访问接口,可以直接调试接口,不需要第三方工具进行调用测试接口
  • 支持权限认证,等功能

Laravel Swagger 扩展

扩展源代码地址:https://github.com/DarkaOnLine/L5-Swagger

12
composer require darkaonline/l5-swaggerphp artisan vendor:publish --provider "L5Swagger\L5SwaggerServiceProvider"

将会生成配置文件 l5-swagger.php,其中需要注意的配置项

  • routes.api 默认值为 api/documentation Swagger 文档系统访问路由
  • routes.docs Swagger 解析注释生成文档 JSON 文件的存储路径
  • paths.annotations 有效注释的路径配置,默认 base_path(‘app‘) 应用路径
  • generate_always 测试环境应该开启这个配置,每次访问都会自动解析注释生成最新的文档
  • swagger_version 这个默认为 2.0 , 建议修改为 3.0

下文所有的注释内容,需要存在于 paths.annotations 路径下。

接口版本

@OA\Info 定义接口版本,标题,描述,已经作者信息。

1234567891011
/** * @OA\Info( *      version="1.0", *      title="用户管理", *      description="用户模块接口", *      @OA\Contact( *          name="PHP 开发支持", *          email="dreamhelingfeng@gmail.com" *      ) * ) */

接口请求方式与请求路径

@OA\Get,@OA\Post 定义接口请求方式

示例:根据USER_ID请求用户详情信息 /api/users/{user_id}
接口分组配置:tags,将会对接口归类

123456789101112131415161718192021
/**  * @OA\Get(  *   path="/api/users/{user_id}",  *   summary="根据 ID 获取用户信息",  *   tags={"用户管理"},  *   @OA\Parameter(  *     name="user_id",  *     in="path",  *     required=true,  *     description="用户 ID",  *     @OA\Schema(  *        type="string"  *     )  *   ),  *   @OA\Response(  *     response=200,  *     description="用户对象",  *     @OA\JsonContent(ref="#/components/schemas/UserModel")  *   )  * )  */

接口请求参数

通过 Swagger 可以定义三类参数,path,header,query

  • path, 参数存在 endponit 中,如,/users/{user_id}
  • header, 参数存在请求头部,如,token 用户校验令牌
  • query, 请求参数带在请求URL上,如,/users?nickname={nickname}
123456789101112
/**  * @OA\Get(  *   @OA\Parameter(  *     name="user_id",  *     in="path",  *     required=true,  *     description="用户 ID",  *     @OA\Schema(  *        type="string"  *     )  * )  */

POST 提交表单,通常使用 application/json 方式,如,创建用户

@OA\Post
path=/users

1234567891011
/**  *   @OA\RequestBody(  *       @OA\MediaType(  *           mediaType="application/json",  *           @OA\Schema(ref="#/components/schemas/UserModel"),  *           example={  *              "username": "helingfeng", "age": "25"  *           }  *       )  *   )  */

Schema 模型定义

上面的注释中,多次引用 @OA\Schema(ref="#/components/schemas/UserModel")

12345678910111213141516
/** * @OA\Schema( *      schema="UserModel", *      required={"username", "age"}, *      @OA\Property( *          property="username", *          type="string", *          description="用户名称" *      ), *      @OA\Property( *          property="age", *          type="int", *          description="年龄" *      ) * ) */

Laravel-Swagger 会自动根据您的注释进行匹配

上传文件接口示例

定义一个接口,接收上传文件,并返回结果远程文件地址

接口定义:

123456789101112131415161718192021222324252627282930
/**  * @OA\Post(  *   path="/api/files/upload",  *   summary="文件上传",  *   tags={"文件上传"},  *   @OA\RequestBody(  *       @OA\MediaType(  *           mediaType="multipart/form-data",  *           @OA\Schema(  *              required={"upload_file"},  *              @OA\Property(  *                  property="upload_file",  *                  type="file",  *                  description="上传文件"  *              ),  *           ),  *       )  *   ),  *   @OA\Response(  *     response=200,  *     description="上传成功",  *     @OA\JsonContent(ref="#/components/schemas/UploadFileModel")  *   ),  *   @OA\Response(  *     response="default",  *     description="error",  *     @OA\JsonContent(ref="#/components/schemas/ErrorModel")  *   )  * )  */

模型定义:

123456789101112131415161718192021222324252627282930
/** * @OA\Schema( *      schema="UploadFileModel", *      @OA\Property( *          property="file_name", *          type="string", *          description="文件名,不包含路径" *      ), *      @OA\Property( *          property="file_path", *          type="string", *          description="文件路径" *      ), *      @OA\Property( *          property="file_url", *          type="string", *          description="URL链接,用于展示" *      ), *      @OA\Property( *          property="file_size", *          type="string", *          description="文件大小,单位B" *      ), *      @OA\Property( *          property="extension", *          type="string", *          description="文件扩展名" *      ) * ) */

访问 api/documentation 效果如图

try it out 上传文件操作结果

需要权限认证的接口

一般对外网开放的接口,需要添加权限控制,Swagger 提供很好的支持

在 l5-swagger.php 配置文件中添加, crypt-token 定义请求头部必须添加 token 作为权限校验令牌。

12345678910111213
‘security‘ => [    /*    |--------------------------------------------------------------------------    | Examples of Security definitions    |--------------------------------------------------------------------------    */    ‘crypt-token‘ => [ // Unique name of security        ‘type‘ => ‘apiKey‘, // The type of the security scheme. Valid values are "basic", "apiKey" or "oauth2".        ‘description‘ => ‘A short description for security scheme‘,        ‘name‘ => ‘token‘, // The name of the header or query parameter to be used.        ‘in‘ => ‘header‘, // The location of the API key. Valid values are "query" or "header".    ],]

接口注释中,添加对应的验证方式:

12345
/**  * security={  *    {"crypt-token": {}}  * },  */

更多 Swagger3 定义字段描述,可以查看官方文档:https://swagger.io/specification/#parameterObject

原文地址:https://www.cnblogs.com/duanweishi/p/11113246.html

时间: 2024-10-09 06:27:10

使用 Laravel-Swagger 编写接口文档(php)的相关文章

[API]使用Blueprint来高雅的编写接口文档

Blueprint(http://apiary.io/)是apiary公司的工具包,用来编写API文档,类似于Markdown,是一种标记语言. 对于习惯使用RESTful API的同志们来说,使用Blueprint可以快速的写出高雅大气的文档: 下面以一个Github中的Gist服务为例,简单的演示一下Blueprint的应用. 原文地址:http://blog.callmewhy.com/2014/06/05/blueprint-tutorial/ API Blueprint是一套API描述

开发底层硬件应该怎么编写接口文档

开发底层硬件应该怎么编写接口文档 这几天在做超市RFID结算系统的上位机程序编写,用的是VB.NET.底层用的是别人开发好的SDK,为什么要写这一篇文章呢?最近因为手头设备的功能限制,我就在网上找其他的公司的RFID射频卡读写器,由于我是做上层开发,所以需要设备供应商提供底层SDK二次开发包,找了好多设备提供商 ,也跟他们索取各自提供的SDK,但总的来说,我还是觉得最先用的这个设备的厂家提供的SDK是最详细的,现在简单说明如下: 一.函数说明: 1.目录结构清晰: 2.函数返回值,参数用表格说明

用Swagger生成接口文档

Swagger简介 在系统设计的时候,各个应用之间往往是通过接口进行交互的.因此接口的定义在整个团队中就变得尤为重要.我们可以把接口的规范用接口描述语言进行描述,然后Swagger可以根据我们定义的接口规范生成对应的接口文档.它生成的接口文档提供了接口测试功能.我们只需要填上对应的参数,然后点击调用,就可以完成一次接口测试,非常方便.就像下图展示的那样. 不仅如此,Swagger还能够根据接口规范自动生成对应的接口代码!比如Java客户端代码.Java服务端代码等.这个东西减少了接口规范的沟通成

运用swagger编写api文档

一.什么是swagger 随着互联网技术的发展,前后端技术在各自的道路上越走越远,他们之间的唯一联系变成了api接口,api接口文档编程了前后端人员的纽带,而swagger就是书写api文档的一款框架. 官网: https://swagger.io/ 相关资源下载地址: https://download.csdn.net/download/zhixingwu/12008773 推荐: 也可以使用 showdoc来书写api文档. 官网: https://www.showdoc.cc/ 二.Swa

springmvc集成swagger实现接口文档自动化生成

一直苦于文档整理工作,因为这是一个很无聊的工作,偶然在网上看到了swagger这东西,感觉不错,于是动手集成了一下,眼前一亮 Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步.Swagger 让部署管理和使用功能强大的API从未如此简单. 费话少说,下面来看一下集成的过程,我用的环境是:jdk1.8+tomc

asp.net core使用Swashbuckle.AspNetCore(swagger)生成接口文档

asp.net core中使用Swashbuckle.AspNetCore生成接口文档 Swashbuckle.AspNetCore:swagger的asp.net core实现,本文使用版本为v1.1.0项目地址:https://github.com/domaindrivendev/Swashbuckle.AspNetCore仔细看了下readme,发现在百度找半天的东西其实readme里面就有... 开局一张图,然后开始编,一些基本的asp.net core东西就不再赘述,本文只对Swash

swagger生成接口文档和map类型参数解析

一:swagger是什么? 1.是一款让你更好的书写API文档的规范且完整框架.2.提供描述.生产.消费和可视化RESTful Web Service.3.是由庞大工具集合支撑的形式化规范.这个集合涵盖了从终端用户接口.底层代码库到商业API管理的方方面面. 方法一:使用第三方依赖(最简单的方法) 1.在pom.xml文件中添加第三方swagger依赖() <dependency> <groupId>com.spring4all</groupId> <artifa

DoNetCore Web Api 采用Swagger进行接口文档管理

第一步:创建API项目 步骤这里不说明 第二步:就是Nuget 包, 两种方式:1.工具->Nuget管理->程序包管理控制台 Install-Package Swashbuckle.AspNetCore 2.工具->Nuget管理->管理Nuget包...  或者右击项目... 输入 Swashbuckle.AspNetCore 第三步:全局配置,这里以最简单的配置为例 在Startup.cs 文件下 ConfigureService 下添加如下代码 services.AddSw

Markdown编写接口文档模版

接口名称 1) 请求地址 https://apis.cnblogs.com/user/info?a=xx&b=xx 2) 调用方式:HTTP GET 3) 接口描述: 接口描述详情 4) 请求参数: GET参数: 字段名称 字段说明 类型 必填 备注 a string Y - b string Y - 5) 请求返回结果: { "errNum": 10001, "errMsg": "Param error" } 6) 请求返回结果参数说明