接口开发,tp5结合swagger-ui安装方法
今天看到老java用的swagger提供接口,美观好用,方便维护,不是写好接口之后再写接口文档,麻烦的要死。网上找了找结合php的方法,在此记录一下,以后再开发接口就可以方便很多了。 Swagger的使用目的是方便优美的呈现出接口API的各种定义, 生成API文档, 包括参数, 路径之类. 有时后端改了API的参数或者其他设置, 前端直接看这个Swagger UI就可以, 方便项目管理和团队协作。
swagger-ui的原理
安装Swagger套件, 然后php文件代码里写注释, 用Swagger后端程序跑来php文件中提取注释, 生成一个json文件, 再通过Swagger前端来美化,达到展示JSON数据的效果。
前提:
电脑上装好了composer和git,直接使用它们进行安装,方便快捷。、
我把tp5和swagger-ui都放在我的wampServer下www中的tpSwagger即:E:\WampServer\WWW\tpSwagger
一、安装ThinkPHP5
无论官网下载还是git、composer安装都可以,我直接用的composer安装,切换到tpSwagger下运行:
composer create-project topthink/think tp5 --prefer-dist
安装好之后,在tp5根目录下直接新建一目录swaggerApi,此目录的路径为:http://localhost/tpSwagger/tp5/swaggerApi(ps:在此建文件夹的目的是为了之后安装swagger之后保存swagger.json文件,你可以保存在别的地方,其实swagger每次回去加载这个生成的swagger.json,生成接口页面。如果我讲的不明白,可以先按照我这个建一下,等装完之后你就明白了)
二、下载swagger-ui
切换到项目的目录,直接git下载swagger,我放的路径是:
git clone https://github.com/swagger-api/swagger-ui.git
然后打开下载好的文件夹,找到dist目录, 打开index.html把其中的那一串url改成自己的url,就是第一步中的创建好的那个url,记得后面加上swagger.json,即http://localhost/tpSwagger/tp5/swaggerApi/swagger.json
<script>
window.onload = function() {
// Build a system
const ui = SwaggerUIBundle({
url: "http://localhost/tpSwagger/tp5/swaggerApi/swagger.json", // 更改此url为你的url
dom_id: '#swagger-ui',
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout"
}) window.ui = ui
}
</script>
改完之后,访问下你的swagger-ui中index所在的url:http://localhost/tpSwagger/swagger-ui/dist/index.html,显示的内容应该为:Failed to load spec.
继续配置~
三、安装swagger-php后端
进入tp框架找到根目录下的composer.json,打开它并向其中的require中添加:
// 找到此文件的require,在后面直接添加
"zircote/swagger-php": "*" // 添加前
"require": {
"php": ">=5.4.0",
"topthink/framework": "^5.0",
}, // 添加后
"require": {
"php": ">=5.4.0",
"topthink/framework": "^5.0",
"zircote/swagger-php": "*"
},
然后进入到此目录下(在此目录下shift+右键,选择在此处打开命令窗口),运行
composer update
等待安装完成或者直接在打开命令窗口之后运行
composer require zircote/swagger-php
提示安装完成后执行
composer global require zircote/swagger-php
会在你tp项目的vendor中生成一个zircote的组件文件夹,说明已经安装插件成功了。
四、生成composer.json文件
直接在命令行中输入:
php E:/WampServer/WWW/tpSwagger/tp5/vendor/zircote/swagger-php/bin/swagger E:/WampServer/WWW/tpSwagger/tp5/vendor/zircote/swagger-php/Examples -o E:/WampServer/WWW/tpSwagger/tp5/swaggerApi/swagger.json
然后你再刷新一下看看http://localhost/tpSwagger/swagger-ui/dist/index.html,就能看到啦~~~
第一个路径是你安装成功后组件的路径;第二个路径是你想要生成这个目录下所有用swagger方式注释的php文件,把所有注释生成api文档;第三个路径是你存放生成swagger.json的路径。
五、ThinkPHP5中直接使用swagger
在tp5中写一个公用的方法,每次访问页面就直接调用此方法生成swagger.json文件,然后跳转到swagger的页面。首先把E:/WampSwever/WWW/tpSwagger/tp5/vendor/zircote/swagger-php/Examples中的例子复制到你的application中,这样你的项目中就有了写好的可以测试的文件;然后写控制器中的方法:
<?php
namespace app\index\controller; use think\Controller;
class Index extends Controller
{
public function index(){
$path = 'D:/WampServer/WWW/tpSwagger/tp5/application'; //你想要哪个文件夹下面的注释生成对应的API文档
$swagger = \Swagger\scan($path);
// header('Content-Type: application/json');
// echo $swagger;
$swagger_json_path = 'D:/WampServer/WWW/tpSwagger/tp5/swaggerApi/swagger.json';
$res = file_put_contents($swagger_json_path, $swagger);
if ($res == true) {
$this->redirect('http://localhost/tpSwagger/swagger-ui/dist/index.html');
}
} }
直接访问index方法,就会跳转到swagger的index.html 看下效果吧~
接口开发,tp5结合swagger-ui安装方法的更多相关文章
- [C#]在 DotNetCore 下的 Swagger UI 自定义操作
1.Swagger UI 是什么? Swagger UI 是一个在线的 API 文档生成与测试工具,你可以将其集成在你的 API 项目当中. 支持 API 自动同步生成文档 高度自定义,可以自己扩展功 ...
- 在 .NET Core 下的 Swagger UI 自定义操作
1.Swagger UI 是什么? Swagger UI 是一个在线的 API 文档生成与测试工具,你可以将其集成在你的 API 项目当中. 支持 API 自动同步生成文档 高度自定义,可以自己扩展功 ...
- python学习笔记(十三)接口开发
一.开发接口的作用 1.mock接口,模拟一些接口,在别的接口没有开发好的时候,需要开发一些模拟接口进行调试和测试. 2.查看数据,比如,获取所有学员信息的接口,就不需要提供数据库的查看信息. 二.接 ...
- springboot 集成swagger ui
springboot 配置swagger ui 1. 添加依赖 <!-- swagger ui --> <dependency> <groupId>io.sprin ...
- UML常用建模工具简介,安装方法和各自的优点
这学期学习了统一建模语言,自己初学时对各种建模工具十分陌生,各种名词都不懂,软件也都不了解,开始很是不知所措.为了防止其他初学者陷入我的困境,自己对各种工具进行了总结: Visio:介绍:Visio是 ...
- .Net WebApi接口之Swagger UI 隐藏指定接口类或方法
swagger的一个最大的优点是能实时同步api与文档,但有些时候我们不想全部公开接口,而要隐藏或屏蔽一些接口类或方法,swagger也是支持的,只需要设置一下DocumentFilter方法. 第一 ...
- WebApi使用swagger ui自动生成接口文档
之前就写到.最近正在使用webapi.这里介绍一个实用的东西swageer ui现在开发都是前后端分开.我们这里是给前端提供api.有时候对于一个api的描述,并不想专门写一份文档.很浪费时间.swa ...
- Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验
Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...
- TP框架整合Swagger UI接口文档
1.下载swagger ui:http://swagger.io/swagger-ui/: 2.在应用目录里新建一个目录xxx:如图 3.解压后把dist目录的所有文件拷贝到新建的目录里面: 4.在新 ...
随机推荐
- java-web中生成文档(一)
基于Java的解决方案也是很多的,包括使用Jacob.Apache POI.Java2Word.iText等各种方式,其实在从Office 2003开始,就可以将Office文档转换成XML文件,这样 ...
- NFS文件共享
NFS文件共享 简介 NFS即网络文件系统(network file system),监听在TCP 2049端口. 服务器需要记住客户端的ip地址以及相应的端口信息,这些信息可以委托给RPC(remo ...
- 【web前端开发】浏览器兼容性处理
1.居中问题div里的内容,IE默认为居中,而FF默认为左对齐,可以尝试增加代码margin: 0 auto;2.高度问题两上下排列或嵌套的div,上面的div设置高度(height),如果div里的 ...
- php+mysql 除了设置主键防止表单提交内容重复外的另一种方法
感觉好久没有更新博客了,一直在做网站及后台,也没有遇到让我觉得可以整理的内容,之前做的一个系统,已经完成了,后来客户又要求加一个功能,大概就是表单提交的时候,约束有一项不能和以前的内容重复,如图 比如 ...
- final关键字(最终的)
1.fianl关键字可以用来修饰类.属性.方法: 2.final关键字修饰的类不能再继承: 如:String String类是final修饰的类不能被继承 3.final关键字修饰的方法不能被重写 ...
- 基于docker的 Hyperledger Fabric 多机环境搭建(上)
环境:ubuntu 16.04 Docker 17.04.0-ce go 1.7.4 consoul v0.8.0.4 ======================================= ...
- oracle中的function的简单语法定义
1. create or replace 函数名 (参数名 in 类型) return 返回值类型 as 定义变量 begin 函数体 end;
- Windows下彻底卸载删除SQL Serever2012
在安装了SQL Server2012之后,当由于某些原因我们需要卸载它时,我们应该怎么操作呢?相信这个问题困扰着不少人,博主经过亲身实践之后,给大家提供这样一种方法. 第一步.在控制面板里面找到程序— ...
- C++之const限定符
作者:tongqingliu 转载请注明出处: C++之const限定符 const初始化 const的特点: 用const加以限定的变量,无法改变. 由于const对象定义之后就无法改变,所以必须对 ...
- 还原SQL SERVER系统库
还原SQL SERVER系统库 共需还原三个系统库,还原顺序:master>msdb>model 还原master (1).数据库配置管理器->数据库服务属性->启动参数-&g ...