接口返回的类型是html页面_1.10 PhalApi 2.x 接口文档

接口文档

在线接口文档

PhalApi提供一些非常实用而又贴心的功能特性,其中最具特色的就是自动生成的在线可视化文档。在线接口文档主要分为两大类,分别是:

  • 在线接口列表文档
  • 在线接口详情文档

当客户端不知道有哪些接口服务,或者需要查看某个接口服务的说明时,可借助此在线接口文档。访问在线接口列表文档的URL是:

http://dev.phalapi.net/docs.php

打开后,便可看到类似下面这样的在线接口文档。

5bdf05d3ba2b12f49bbbeefd9fb2da4c.png

此在线文档是实时生成的,可根据接口源代码以及注释自动生成。当有新增接口服务时,刷新后便可立即看到效果。通过在接口列表文档,可点击进入相应的接口详情文档页面。

温馨提示:如果打开在线文档,未显示任何接口服务,请确保服务环境是否已关闭PHP的opcache缓存。

代码、注释与接口文档

PhalApi提供了自动生成的在线接口文档,对于每一个接口服务,都有对应的在线接口详情文档。如默认接口服务Site.Index的在线接口详情文档为:

0b0dead0b37cced97b9e97b99d27fa1a.png

此在线接口详情文档,从上到下,依次说明如下。

接口服务名称

接口服务名称是指用于请求时的名称,对应s参数(或service参数)。接口服务的中文名称,为不带任何注解的注释,通常为接口类成员函数的第一行注释。

class Site extends Api {/*** 默认接口服务*/public function index() {}
}

接口说明

接口说明对应接口类成员函数的@desc注释。

class Site extends Api {/*** 默认接口服务* @desc 默认接口服务,当未指定接口服务时执行此接口服务*/public function index() {}
}

接口参数

接口参数是根据接口类配置的参数规则自动生成,即对应当前接口类getRules()方法中的返回。其中最后的“说明” 字段对应参数规则中的desc选项。可以配置多个参数规则。此外,配置文件./config/app.php中的公共参数规则也会显示在此接口参数里。

class Site extends Api {public function getRules() {return array('index' => array('username'  => array('name' => 'username', 'default' => 'PHPer', ),),);}
}

返回结果

返回结果对应接口类成员函数的@return注释,可以有多组,格式为:@return 返回类型 返回字段 说明

class Site extends Api {/*** 默认接口服务* @desc 默认接口服务,当未指定接口服务时执行此接口服务* @return string title 标题* @return string content 内容* @return string version 版本,格式:X.X.X* @return int time 当前时间戳*/public function index() {}
}

接口返回示例

为了方便客户端在未调用接口前也能了解接口的返回格式和示例,可以添加为每个接口服务添加相应的返回示例、同时,考虑到服务端维护的便易性,我们会对每个接口服务单独使用一个文件来存放。默认情况下,返回示例文件存放在:

./src/view/docs/demos

文件名是:

接口服务名称 + .json

例如:

./src/view/docs/demos/App.Site.Index.json

示例文件里可以放置返回给客户端的示例。如:

{"ret": 200,"data": {"title": "Hello PhalApi","version": "2.7.0","time": 1558489902},"msg": ""
}

最后,在线文档的展示效果是:

f051c664547728315f58115d1d53e053.png
注意!接口返回示例,需要PhalApi 2.7.0 及以上版本方可支持。

异常情况

异常情况对应@exception注释,可以有多组,格式为:@exception 错误码 错误描述信息。例如:

/*** @exception 400 非法请求,参数传递错误*/public function index() {

刷新后,可以看到新增的异常情况说明。

e73d4e065defada5fbbcd9acc4c43570.png

公共注释

对于当前类的全部函数成员的公共@exception异常情况注释和@return返回结果注释,可在类注释中统一放置。而对于多个类公共的@exception@return```注释,则可以在父类的类注释中统一放置。

也就是说,通过把@exception注解和@return注解移到类注释,可以添加全部函数成员都适用的注解。例如,ApiUser类的全部接口都返回code字段,且都返回400和500异常,则可以:

<?php
namespace AppApi;use PhalApiApi;/*** @return int code 操作码,0表示成功* @exception 400 参数传递错误* @exception 500 服务器内部错误*/class User extends Api {

这样就不需要在每个函数成员的注释中重复添加注解。此外,也可以在父类的注释中进行添加。对于相同异常码的@exception注解,子类的注释会覆盖父类的注释,方法的注释会覆盖类的注释;而对于相同的返回结果@return注释,也一样。

需要注意的是,注释必须是紧挨在类的前面,而不能是在namespace前面,否则会导致注释解析失败。

通过在线接口文档进行测试

在线接口文档,不仅可以用来查看接口文档,包括接口参数、返回字段和功能说明外,还可以在上面进行接口测试。这将会直接请求当前的接口。效果如下:

610749c4ddebf003372d99f86f033151.png

如何生成离线接口文档?

上面在线的接口文档,也可以一键生成离线版的HTML文档,方便传阅,离线查看。

当需要生成离线文档时,可以在终端,执行以下命令:

phalapi$ php ./public/docs.php Usage:生成展开版:  php ./public/docs.php expand
生成折叠版:  php ./public/docs.php fold脚本执行完毕!离线文档保存路径为:/path/to/phalapi/public/docs

执行后,可以看到类似上面的提示和结果输出。再查看生成的离线文档,可以看到类似有:

phalapi$ tree ./public/docs
./public/docs
├── App.Examples_CURD.Delete.html
├── App.Examples_CURD.Get.html
├── App.Examples_CURD.GetList.html
├── App.Examples_CURD.Insert.html
├── App.Examples_CURD.Update.html
├── App.Examples_Upload.Go.html
├── App.Site.Index.html
└── index.html

最后,可以在页面访问此离线版文档,如访问链接:

http://dev.phalapi.net/docs/index.html

也可以将此docs目录打包,在本地打开访问查看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355446.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言变量相等问题穷举法,C语言穷举法经典例题.ppt

《C语言穷举法经典例题.ppt》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《C语言穷举法经典例题.ppt(18页珍藏版)》请在人人文库网上搜索。1、枚举法(穷举法),“笨人之法”&#xff1a; 把所有可能的情况一一测试&#xff0c;筛选出符合条件的各种结果进行输出。,分…

jmeter数据库负载测试_JMeter:负载测试关系数据库

jmeter数据库负载测试Apache JMeter是完全使用Java编写的性能测试工具。 可以在请求/响应模型上运行的任何应用程序都可以使用JMeter进行负载测试。 关系数据库也不例外&#xff1a;接收sql查询&#xff0c;执行查询并返回执行结果。 我将向您展示使用JMeter的图形用户界面设置…

python requests编码的问题_python requests 编码问题

url host pathheaders {...}data {...}files {...}files两种类型: 字典和 元组{"field1" : ("filename1", open("filePath1", "rb")),"field2" : ("filename2", open("filePath2", "rb"…

图片热区map-area

自适应图片热区坐标&#xff1a; html: <div id"imgContainer" > <img src"../../assets/flow_chart.jpg" id"flowImg" alt"流程图" style"width:100%;height:100%;" usemap"#flowChartImg"> <…

c语言编程计算人口增长模式转变示意图,读“人口增长模式及其转变示意图”,回答下列问题。(5分)(1)图中字母代表的人口增长模式是:A____________、B____...

读“人口增长模式及其转变示意图”&#xff0c;回答下列问题。(5分)(1)图中字母代表的人口增长模式是&#xff1a;A____________、B____更多相关问题According to your textbook, the following statement is an example of __________. "when Tiger Wo键盘输入一个班n个学…

具有Couchbase,Java EE和WildFly的CRUD Java应用程序

Couchbase是一个开源的NoSQL文档数据库。 它允许访问&#xff0c;索引和查询JSON文档&#xff0c;同时利用集成的分布式缓存来实现高性能的数据访问。 开发人员可以使用不同的语言&#xff08;Java&#xff0c;Go&#xff0c;.NET&#xff0c;Node&#xff0c;PHP&#xff0c;…

python定时下载链接_python定时下载FTP指定文件

公司正好有个需求&#xff0c;定期从远端ftp下载指定昨天的数据&#xff0c;写了2个函数&#xff0c;一个是连接远端ftp&#xff0c;另一个是定期下载远端数据&#xff0c;用到了ftplib、datetime和正则re三个模块1.ftplib:连接和下载ftp数据2.datetime:指定下载日期--每天的前…

c语言10个人 三向成绩,C语言入门学习精华:这样学习C语言最有效

C语言入门学习精华&#xff1a;这样学习C语言最有效c语言死了吗&#xff1f;本材料描述了使用C语言的高级技能&#xff0c;并努力将您的C语言能力从“基本”提升到“高级”。然而&#xff0c;学习态度比学习方法要好。在正式学习之前&#xff0c;有一个问题是不能抱怨的。也就是…

jQuery UI全教程之一(dialog的使用教程)

jQuery UI目前的版本已经更新到了1.8.7。个人感觉和easyui相比起来&#xff0c;jQuery UI在界面的美观程度和可定制型更强一些。所以再次将一些jQuery UI组件的用法说明一下&#xff0c;方便日后查阅。也方面没接触jQuery UI的人能早日使用jQuery UI套件 (一)首先来说jQuery UI…

python使用redis做缓存_Python中的Redis客户端缓存(二)

Python部落(python.freelycode.com)组织翻译&#xff0c;禁止转载&#xff0c;欢迎转发。处理失效无效消息如何发送到被追踪的客户端取决于客户端正在使用的Redis序列化协议(RESP)。早期版本的Redis使用RESP2&#xff0c;但是它的后续版本RESP3已经存在于Redis 6中&#xff0c;…

c语言中有哪些函数关系,C语言中有哪些常用的函数

C语言中有哪些常用的函数发布时间&#xff1a;2020-11-17 17:01:32来源&#xff1a;亿速云阅读&#xff1a;107作者&#xff1a;小新这篇文章主要介绍C语言中有哪些常用的函数&#xff0c;文中介绍的非常详细&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴们一定要…

akka es/cqrs_在Akka中实现主从/网格计算模式

akka es/cqrs主从模式是容错和并行计算的主要示例。 模式背后的想法是将工作划分为相同的子任务&#xff0c;然后将其委派给从属。 这些从属节点或实例将处理工作任务&#xff0c;并将结果发送回主节点。 然后主节点将编译从所有从节点接收到的结果。关键是从节点仅知道如何处理…

05 HTML字符串转换成jQuery对象、绑定数据到元素上

1 要求 将一段 HTML脚本 封装成一个字符串&#xff0c;将这个字符串转换成一个jQuery对象&#xff1b;然后将这个jQuery对象添加到指定的元素中去 2 步骤 定义字符串 var str <div id"box01">hello world</div>; //定义一个字符串 利用jQuery框架将字符…

python迭代器使用_Python迭代器的用法

我们在前面使用过语句“for x in列表对象”&#xff0c;这就表示列表对象是可迭代的(Iterable)。那么如何判断某个对象是否可迭代呢&#xff1f;答案是可以使用collections.Iterable类来判断。如下面的代码所示&#xff0c;列表是可迭代的&#xff0c;整数是不可迭代的&#xf…

c语言求佩尔方程的解设计思路,c语言版 佩尔方程求最小正整数解及第k解(矩阵快速幂)...

佩尔方程讲解连接&#xff1a;若一个丢番图方程具有以下的形式&#xff1a;且为正整数&#xff0c;则称此方程为佩尔方程(英文&#xff1a;Pells equation 德文&#xff1a;Pellsche Gleichung) 若是完全平方数&#xff0c;则这个方程式只有解(实际上对任意的&#xff0c;都是解…

在Java EE 7中自动配置JMS资源

JMS 2.0&#xff08;Java EE 7平台的一部分&#xff09;引入了许多不错的功能 。 其中之一是能够声明JMS资源以进行自动部署。 Java EE 7之前的版本 使用Resource注入连接工厂 使用Resource查找目标位置&#xff08;队列/主题&#xff09; 拉出Session对象并使用它创建Messa…

python关键词提取源码_Python 结巴分词 关键词抽取分析

关键词抽取就是从文本里面把跟这篇文档意义最相关的一些词抽取出来。这个可以追溯到文献检索初期&#xff0c;当时还不支持全文搜索的时候&#xff0c;关键词就可以作为搜索这篇论文的词语。因此&#xff0c;目前依然可以在论文中看到关键词这一项。除了这些&#xff0c;关键词…

安卓欢迎界面和activity之间的跳转问题

使用安卓的UI界面&#xff0c;就不得不了解activity&#xff0c;由于actvity就像是一个form表单一样&#xff0c;全部的UI都呈如今这里&#xff0c;他能够承载全部的UI控件。INtent就是一个中继站一样。他负责组件之间的沟通。以下我们来说一下一个actvity跳转到还有一个actvit…

C语言输出最后一个空格去掉,新人提问:如何将输出时每行最后一个空格删除...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼如何将每行最后一个空格删除&#xff0c;使矩阵只有数字间有空格&#xff0c;没有多余空格&#xff1f;#include#includeint main(){int i,j,k,m,n,x,h,y;int a[15][15]{0};while(scanf("%d",&i)){k1;for(n1;n<i;…

android 9.0 https 适配,如何适配 Android 9.0? 在 Android 9.0 上发生 SSL handshake timed out 异常怎么解决...

Android 9.0 开始&#xff0c;默认不允许明文传输&#xff0c;所以在建立网络连接时会使用 https 连接&#xff0c;同时进行安全认证。如果应用没有做对应处理&#xff0c;即会发生上述异常。解决方法有两种&#xff1a;一. 在应用里声明允许明文传输.1. 在应用的 res/xml 文件…