Partager un package d'extension ThinkPHP SwaggerV3
Sep 17, 2021 pm 04:01 PM下面thinkphp框架教程栏目将给大家分享一个ThinkPHP SwaggerV3扩展包,希望对需要的朋友有所帮助!
大致过程和我之前写的Laravel 扩展差不多 Laravel 写一个中文验证扩展包
只有一些小小的区别这边写个教程。希望为thinkphp 开发者做一点点贡献。
主要讲一些开发的过程和一些感悟吧,对Tp不是特别熟,欢迎大家指正~
源码:https://github.com/liaoshengping/think-swagger
安装:
composer require liaosp/think-swagger -vvv
创建包
我在tp的根目录下创建pkg
mkdir pkg cd pkgpackage-builder build think-swagger
添加 zircote/swagger-php,在composer.json 添加
添加swagger
"require": { "zircote/swagger-php": "^3.2" },
根据 官网的示例,我们希望在TP触发如下代码
<?php require("vendor/autoload.php"); $openapi = \OpenApi\Generator::scan(['/path/to/project']); header('Content-Type: application/x-yaml'); echo $openapi->toYaml();
本地导入composer
需要在tp的compsoer 加入 “minimum-stability”: “dev”
"minimum-stability": "dev"
repositories 加入
{ "type": "path", "url": "pkg\\think-swagger" }
创建控制器
在src 创建 一个Controller.php
一个是展示 html 的,一个是提供swagger api 接口的
具体代码可查阅:
https://github.com/liaoshengping/think-swagger/blob/master/src/Controller.php
添加路由
"autoload": { "psr-4": { "Liaosp\\ThinkSwagger\\": "src" }, "files": [ "src/route.php" ] },
添加router.php
tp5 我现在的版本可以这样做,但是TP6我试了下,不行啊报错;如果后面有Tp6项目了,我会把tp6部分整合一下欢迎大家收藏。
Route::any('apidoc', '\\Liaosp\\ThinkSwagger\\Controller@apidoc'); Route::any('apidocJson', '\\Liaosp\\ThinkSwagger\\Controller@apidocJson');
添加Swagger-ui
swagger ui 是 开源的 js库 github.com/swagger-api/swagger-ui
静态形式引用 dist/index.html
静态资源导入
Swagger 主要需要这三个文件
'/swagger/swagger-ui.css', '/swagger/swagger-ui-bundle.js', '/swagger/swagger-ui-standalone-preset.js'
tp5没有publish ,所以我想了一个办法,通过查询是否存在资源,进行资源的发布。感兴趣的可以看下上面提供的源码
一些感想
可能我的思维Laravel化了,在开发之前我认为一些 本应该有的扩展功能都应该有的,但是我查阅了好几个作者的think-swagger扩展包,不太灵活了。以至于有一些开发扩展包的同学,需要手动改源码,或者干脆就没有composer 包,直接写教程如何去实现。
接着我查阅了下Tp6的源码,在开发扩展方面有一定的增强,比如下面的是我学Tp6 的官方的插件:
Laravel 的包的提供者的命名官方的是在包名加 Provider 我查阅了下tp的扩展包,习惯于用Service 作为包的提供者 "extra": { "think": { "services": [ "Liaosp\\ThinkSwagger\\Service" ] } }
不过Laravel 之前也需要手动添加Provider,希望国产Tp越来越好,目前我测试了下这个包可以在Tp5运行,tp6不行。后面再看看有没有接触TP6项目再把这个包升级一下吧。
源码:https://github.com/liaoshengping/think-swagger
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Il existe plusieurs versions de thinkphp

Lequel est le meilleur, Laravel ou thinkphp ?

Suggestions de développement : Comment utiliser le framework ThinkPHP pour implémenter des tâches asynchrones

Cryptage et déchiffrement des données ThinkPHP6 : protection de la sécurité des données sensibles

Quelles sont les performances de thinkphp ?
