今天看到老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安装方法的更多相关文章

  1. [C#]在 DotNetCore 下的 Swagger UI 自定义操作

    1.Swagger UI 是什么? Swagger UI 是一个在线的 API 文档生成与测试工具,你可以将其集成在你的 API 项目当中. 支持 API 自动同步生成文档 高度自定义,可以自己扩展功 ...

  2. 在 .NET Core 下的 Swagger UI 自定义操作

    1.Swagger UI 是什么? Swagger UI 是一个在线的 API 文档生成与测试工具,你可以将其集成在你的 API 项目当中. 支持 API 自动同步生成文档 高度自定义,可以自己扩展功 ...

  3. python学习笔记(十三)接口开发

    一.开发接口的作用 1.mock接口,模拟一些接口,在别的接口没有开发好的时候,需要开发一些模拟接口进行调试和测试. 2.查看数据,比如,获取所有学员信息的接口,就不需要提供数据库的查看信息. 二.接 ...

  4. springboot 集成swagger ui

    springboot 配置swagger ui 1. 添加依赖 <!-- swagger ui --> <dependency> <groupId>io.sprin ...

  5. UML常用建模工具简介,安装方法和各自的优点

    这学期学习了统一建模语言,自己初学时对各种建模工具十分陌生,各种名词都不懂,软件也都不了解,开始很是不知所措.为了防止其他初学者陷入我的困境,自己对各种工具进行了总结: Visio:介绍:Visio是 ...

  6. .Net WebApi接口之Swagger UI 隐藏指定接口类或方法

    swagger的一个最大的优点是能实时同步api与文档,但有些时候我们不想全部公开接口,而要隐藏或屏蔽一些接口类或方法,swagger也是支持的,只需要设置一下DocumentFilter方法. 第一 ...

  7. WebApi使用swagger ui自动生成接口文档

    之前就写到.最近正在使用webapi.这里介绍一个实用的东西swageer ui现在开发都是前后端分开.我们这里是给前端提供api.有时候对于一个api的描述,并不想专门写一份文档.很浪费时间.swa ...

  8. Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验

    Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...

  9. TP框架整合Swagger UI接口文档

    1.下载swagger ui:http://swagger.io/swagger-ui/: 2.在应用目录里新建一个目录xxx:如图 3.解压后把dist目录的所有文件拷贝到新建的目录里面: 4.在新 ...

随机推荐

  1. C语言socket编程——linux环境

    先写一个服务器端的监听程序,功能室从客户端读取字符,接收到后告知客户端“I got your message: ”+收到的消息:server.c #include <stdio.h> #i ...

  2. Ajax02 json

    1 什么是json JavaScript Object Notation(JavaScript 对象表示法) 是一种轻量级的数据交换格式. 注: 数据交换:将数据先转换成一种与平台无关的数据 格式(比 ...

  3. sparklyr包:实现Spark与R的接口

    日前,Rstudio公司发布了sparklyr包.该包具有以下几个功能: 实现R与Spark的连接—sparklyr包提供了一个完整的dplyr后端 筛选并聚合Spark数据集,接着在R中实现分析与可 ...

  4. tornado之文件上传的几种形式form,伪ajax(iframe)

    1直接form提交给后台处理 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  5. 如何有效的跟踪线上 MySQL 实例表和权限的变更

    介绍 从系统管理员或 DBA 的角度来讲, 总期望将线上的各种变更限制在一个可控的范围内, 减少一些不确定的因素. 这样做有几点好处: . 记录线上的库表变更; . 对线上的库表变更有全局的了解; . ...

  6. Android 图片加载框架Glide4.0源码完全解析(一)

    写在之前 上一篇博文写的是Picasso基本使用和源码完全解析,Picasso的源码阅读起来还是很顺畅的,然后就想到Glide框架,网上大家也都推荐使用这个框架用来加载图片,正好我目前的写作目标也是分 ...

  7. css样式表的选择器与分类

    css 样式表的作用: 主要用于结构,样式与行为,CSS主要的作用就是美化网页的一个语言,它的特点: 1.结构与样式分离的方式,便于后期维护与改版; 2.样式定义精确到像素的级别; css样式表的结构 ...

  8. Aop初步了解

    AOP(aspect-oriented programming) aspect是一种新型的模块化机制,用来描述分散在对象,类或函数中横切关注点.从关注点中分离出横切关注点是面向切面的程序设计的核心概念 ...

  9. 关于ArcGIS Android的在x86和x64系统中兼容性的问题与解决方案

    我们都知道,在配置ArcGIS Android SDK时,需要在jniLibs目录下放置三个文件夹,分别是armeabi.armeabi-v7a.x86三个文件夹,ArcGIS Android针对目标 ...

  10. 利用 Traceview 精准定位启动时间测试的异常方法 (工具开源)

    机智的防爬虫标识原创博客地址:http://www.cnblogs.com/alexkn/p/7095855.html博客求关注: http://www.cnblogs.com/alexkn 1.启动 ...