php框架YII2的swagger踩坑记录

2024-05-24 17:38
文章标签 php 记录 框架 swagger yii2

本文主要是介绍php框架YII2的swagger踩坑记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  1. light/yii2-swagger 使用的YII框架这个包。(能不能拉下来,就得看你了,反正我是拉了很久)(默认是swagger3.0,与下面的demo不符合,下面的demo是用的2.0)由于我使用的工具只支持2.0,所以用2.0了,3.0变成了openapi规范了。

  2. 开始可以先试用一下文档下面的demo

搭成功后, 他有个demo.gif,用cli启动命令,然后

然后在浏览器中输入:http://127.0.0.1:8080 就可以访问demo里面的接口对应的文档了。

(如果页面显示你要auth验证的话,你就把SiteController第58行.api_key 为 test 注释掉就可以了 )

    3.我主要是想要生成json文件导入到其他工具使用。(其他方式需要在代码中配置)

在项目根目录

php vendor/zircote/swagger-php/bin/swagger ./modules/v1/controllers/ -o ./
第一个路径是执行文件,第二个路径是你写了注释的PHP文件,第三个是你生成swagerr.json的路径

生成后,大概是长成这样。

{"swagger": "2.0","paths": {"/users": {"get": {"tags": ["user"],"summary": "\u83b7\u53d6\u7528\u6237\u5217\u8868","description": "\u6d4b\u8bd5\u76f4\u63a5\u8fd4\u56de\u4e00\u4e2aarray","produces": ["application/json"],"parameters": [{"name": "access_token","in": "query","description": "access token6666666666","required": true,"type": "string"}],"responses": {"200": {"description": " success"}}},"post": {"tags": ["user"],"summary": "\u521b\u5efa\u7528\u6237\u63a5\u53e3","description": "\u6d4b\u8bd5Param\u662f *query* \u7c7b\u578b, \u5982\u679c\u8bbe\u7f6e\u6210 *formData* \u7c7b\u578b\u7684\u5c31\u53ef\u4ee5\u4f7f\u7528post\u83b7\u53d6\u6570\u636e","produces": ["application/json"],"parameters": [{"name": "username","in": "formData","description": "\u7528\u6237\u59d3\u540d","required": true,"type": "string"},{"name": "phone","in": "formData","description": "\u624b\u673a\u53f7","required": true,"type": "string"},{"name": "sex","in": "formData","description": "\u6027\u522b 1. \u7537 2.\u5973 \u6b64\u9879\u4e3a\u975e\u5fc5\u586b\u9879.\u5c55\u793a\u6210select","required": false,"type": "integer","enum": [1,2]}],"responses": {"200": {"description": " success"},"401": {"description": "\u9700\u8981\u91cd\u65b0\u767b\u9646","schema": {"$ref": "#/definitions/Error"}}}},"options": {"tags": ["user"],"summary": "options","operationId": "userOptions","consumes": ["application/json"],"produces": ["application/json"],"responses": {"200": {"description": "success","headers": {"Allow": {"type": "GET, POST, HEAD, OPTIONS"},"Content-Type": {"type": "application/json; charset=UTF-8"}}}}}},"/users/{id}": {"put": {"tags": ["user"],"summary": "\u66f4\u65b0\u7528\u6237\u63a5\u53e3","description": "*path*\u7c7b\u578b\u7684\u53c2\u6570\u4f1a\u653e\u5165\u8bf7\u6c42\u5730\u5740\u5730\u5740\u4e2d","produces": ["application/json"],"parameters": [{"name": "id","in": "path","description": "\u7528\u6237ID","required": true,"type": "integer"},{"name": "username","in": "formData","description": "\u7528\u6237\u59d3\u540d","required": true,"type": "string"},{"name": "phone","in": "formData","description": "\u624b\u673a\u53f7","required": true,"type": "string"},{"name": "sex","in": "formData","description": "\u6027\u522b 1. \u7537 2.\u5973 \u6b64\u9879\u4e3a\u975e\u5fc5\u586b\u9879.\u8fd9\u91cc\u6307\u5b9a\u4e86\u4e00\u4e2a\u9ed8\u8ba4\u9879\uff0c\u90a3\u4e48\u4f1a\u9ed8\u8ba4\u9009\u4e2d","required": false,"type": "integer","default": 1,"enum": [1,2]},{"name": "job","in": "formData","description": "\u8fd9\u91cc\u53ef\u4ee5\u8bbe\u7f6e\u9ed8\u8ba4\u503c","required": false,"type": "string","default": "\u7a0b\u5e8f\u733f"},{"name": "avatar","in": "formData","description": "\u7c7b\u578b\u8bbe\u7f6e\u4e3a`file`\u5219\u53ef\u4ee5\u5c55\u793a\u4e0a\u4f20\u6309\u94ae\uff0c\u5728\u540e\u7aef\u548c\u666e\u901a\u4e0a\u4f20\u4e00\u6837\u5904\u7406","required": false,"type": "file"}],"responses": {"200": {"description": " success"},"401": {"description": "\u9700\u8981\u91cd\u65b0\u767b\u9646","schema": {"$ref": "#/definitions/Error"}}}}},"/users/query": {"post": {"tags": ["user"],"summary": "\u5220\u9664\u7528\u6237","description": "\u8fd9\u91cc\u5c55\u793a\u4e00\u4e2a\u7a0d\u5fae\u9ad8\u7aef\u70b9\u7684\u7528\u6cd5","operationId": "QueryUser","consumes": ["application/json"],"produces": ["application/json"],"parameters": [{"name": "body","in": "body","description": "\u8fd9\u91cc\u8981\u4e3b\u8981\u914d\u7f6e`request`\u7ec4\u4ef6\u7684parsers\uff0c\u6765\u652f\u6301\u63a5\u6536\u8fd9\u4e2a\u7c7b\u578b\u7684\u8bf7\u6c42","required": true,"schema": {"$ref": "#/definitions/UserIdList"},"type": "string"}],"responses": {"200": {"description": "success"}}}}},"definitions": {}
}

 swagger3.0的生成文件长这样

openapi: 3.0.0
paths:/pets:get:description: 'Returns all pets from the system that the user has access to'operationId: findPetsparameters:-name: tagsin: querydescription: 'tags to filter by'required: falsestyle: formschema:type: arrayitems:type: string-name: limitin: querydescription: 'maximum number of results to return'required: falseschema:type: integerformat: int32responses:'200':description: 'pet response'content:text/xml:schema:type: arrayitems:$ref: '#/components/schemas/Pet'text/html:schema:type: arrayitems:$ref: '#/components/schemas/Pet'application/json:schema:type: arrayitems:$ref: '#/components/schemas/Pet'application/xml:schema:type: arrayitems:$ref: '#/components/schemas/Pet'default:description: 'unexpected error'content:text/xml:schema:$ref: '#/components/schemas/ErrorModel'text/html:schema:$ref: '#/components/schemas/ErrorModel'application/json:schema:$ref: '#/components/schemas/ErrorModel'application/xml:schema:$ref: '#/components/schemas/ErrorModel'

 

可以参考的其他人和一些资料链接:

https://www.jianshu.com/p/554cd3762ab1

https://www.cnblogs.com/jcydd/p/11455989.html

https://openapi-map.apihandyman.io/

https://huangwenchao.gitbooks.io/swagger/content/

 

 

PHP的资料是真的少。。。。插件也是。。。。

暂时更新到这个里吧。

 

 

这篇关于php框架YII2的swagger踩坑记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/999082

相关文章

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe

基于Spring Boot 的小区人脸识别与出入记录管理系统功能

《基于SpringBoot的小区人脸识别与出入记录管理系统功能》文章介绍基于SpringBoot框架与百度AI人脸识别API的小区出入管理系统,实现自动识别、记录及查询功能,涵盖技术选型、数据模型... 目录系统功能概述技术栈选择核心依赖配置数据模型设计出入记录实体类出入记录查询表单出入记录 VO 类(用于

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是