php怎么根据接口文档实现功能,CodeIgniter+swagger实现 PHP API接口文档自动生成功能...

一、安装swagger

1、首先需要有composer,没有的自行百度安装

2、下载swagger,打开网站https://packagist.org/packages/zircote/swagger-php,根据自己的php版本选择对应的版本号

2c71c05f52389c59e86a989f389c0726.png

3、安装:PhpStorm打开项目,然后在左下角

4cea22cc1bb4276e11c8e3e714784c28.png点击Terminal弹窗黑窗口

0daad06e9d51a5d1e0e2c93e0bfc44c2.png然后在里面输入:composter require zircote/swagger-php 2.0.13    回车,开始安装

4、使用,安装成功后,在CodeIgniter控制器中(/admin/application/controllers/)新建Swagger.php

/**

* Created by PhpStorm.

* User: 50364

* Date: 2018/12/20

* Time: 13:44

* api 接口文档

*/

class Swagger extends CI_Controller {

/**

* 构造函数

*

* 数据模型,扩展库,辅助方法初始化

*/

public function __construct() {

parent::__construct();

}

public function index(){

//接口php文件存放的本地路径 要找到入口文件index.php的路径 (D:/www/ci)

$openapi = swagger\scan(__DIR__);

//最后生成的json文件存放路径(例子:D:/www/ci/swagger/swagger-docs/swagger.json)

$jasonFile = __DIR__.'swagger/swagger-docs/swagger.json';

//每次自动生成json文件

file_put_contents($jasonFile,$openapi);

//加载视图

$this->load->view('swagger','');

}

}

然后创建视图文件(/admin/application/controllers/swagger.php),这里要下载(swagger-ui-master.zip,解压到相应目录,然后把dist中的index.html文件中的内容复制到swagger.php中,再把json文件路径改成自己的就可以),这样每次修改api接口注释信息的时候就会自动生成json文件

路径: 域名/swagger/swagger-docs/swagger.json

var url = "swagger/swagger-docs/swagger.json";

二、使用swagger

可以参考这篇博客内容写的还是比较全的(https://laravel-china.org/index.php/topics/7430/how-to-write-api-documents-based-on-swagger-php)

我这简单介绍下:

1、在接口控制器目录下创建/api/application/controllers/swagger.php,写API 描述信息

/*

* @SWG\Swagger(

* swagger="2.0",schemes={"https"},host="api.aa.com",basePath="/api",

* @SWG\Info(version="2.0",title="官网接口文档",description="官网2.0版本内部口文档")

* )

*/

2、在其他接口文件GIT提交

class Product ectends restful{

/*

* @SWG\Get(

* path="/product/menu/id/{id}",

* summary="产品类别列表接口",

* description="返回包含产品类别列表数据信息。",

* tags={"product"},

* @SWG\Parameter(

* name="id",

* in="path",

* default="5037",

* required=true,

* description="产品类别id",

* type="number"),

* @SWG\Response(response=200,description="OK")

* )

*/

public menu_get(){

}

}

3、Post提交

* @SWG\Post(

* path="/product/product_select",

* summary="产品选型接口",

* description="返回包含产品选型数据。",

* consumes={"application/x-www-form-urlencoded"},

* tags={"product"},

* @SWG\Parameter(

* name="id",

* in="formData",

* required=true,

* default="5037",

* description="产品栏目id",

* type="number"),

* @SWG\Parameter(

* name="type",

* in="formData",

* required=true,

* default="1",

* description="产品类型 0普通 1小众 2特殊 3与普通二级类别不同",

* type="number"),

* @SWG\Parameter(

* name="child",

* in="formData",

* default="5077",

* description="产品下级栏目id",

* type="number"),

* @SWG\Parameter(

* name="searchIds",

* in="formData",

* required=false,

* description="选型数据:10951,10961,10971",

* default="",

* type="string"

* ),

* @SWG\Response(response=200,description="OK")

* )

d2940f59a79757bfb840de573459b196.png


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部