快嘉代码生成能力平台目前一共提供了三种接口的代码生成模板,分别是apiControllers、appControllers和genericControllers,其中apiControllers和appControllers为封装好的接口类型,可以分别作为开放平台接口选型和移动端接口选型,genericControllers比较灵活,可以适应绝大部分接口场景。
下面就以genericControllers为例介绍如何设计接口。
请求body为空默认响应
<bundle>
<packets>
</packets>
<genericControllers>
<genericController name="AppVersionGenericController"
version="" path="/generic/version/" clientName="AppVersionGenericClient"
clientParent="com.fastjrun.client.BaseGenericClient" remark="版本接口"
tags="基本接口">
<service name="versionService" class="VersionServiceRestGeneric">
<method name="latests" version="" path="latests" remark="最近版本列表">
</method>
</service>
</genericController>
</genericControllers>
</bundle>
以上接口访问路径、请求参数、示例和响应参数、示例如下
请求body有值默认响应
<bundle>
<packets>
<packet class="packet.generic.RegistserRestRequestBody" parent="com.fastjrun.packet.BaseRequestBody">
<field name="loginId" dataType="String" length="12" canBeNull="false"
remark="登录名" />
</packet>
</packets>
<genericControllers>
<genericController name="AppVersionGenericController"
version="" path="/generic/version/" clientName="AppVersionGenericClient"
clientParent="com.fastjrun.client.BaseGenericClient" remark="版本接口"
tags="基本接口">
<service name="versionService" class="VersionServiceRestGeneric">
<method name="latests" version="" path="latests" remark="最近版本列表">
<request class="packet.generic.RegistserRestRequestBody" />
</method>
</service>
</genericController>
</genericControllers>
</bundle>
如上所示,请求参数定义为packet,class为类名,该packet只有一个参数loginId,类型为String,长度12,不可为空,备注为登录名。 该请求参数在接口系统中示例 以上接口访问路径、请求参数、示例和响应参数、示例如下
响应有值,且响应报文中如何定义list
<bundle>
<packets>
<packet class="packet.generic.RegistserRestRequestBody" parent="com.fastjrun.packet.BaseRequestBody">
<field name="loginId" dataType="String" length="12" canBeNull="false"
remark="登录名" />
</packet>
<packet class="packet.generic.VersionListResponseBody" parent="com.fastjrun.packet.BaseResponseBody">
<list name="list" class="packet.generic.Version">
<field name="id" dataType="Long" length="64" canBeNull="false"
remark="版本Id" />
<field name="versionNo" dataType="String" length="64"
canBeNull="false" remark="版本号" />
<field name="versionInfo" dataType="String" length="400"
canBeNull="false" remark="版本信息" />
</list>
</packet>
</packets>
<genericControllers>
<genericController name="AppVersionGenericController"
version="" path="/generic/version/" clientName="AppVersionGenericClient"
clientParent="com.fastjrun.client.BaseGenericClient" remark="版本接口"
tags="基本接口">
<service name="versionService" class="VersionServiceRestGeneric">
<method name="latests" version="" path="latests" remark="最近版本列表">
<request class="packet.generic.RegistserRestRequestBody" />
<response class="packet.generic.VersionListResponseBody" />
</method>
</service>
</genericController>
</genericControllers>
</bundle>
如上所示,VersionListResponseBody中增加list节点,name为键值,class为list中存储对象类名。 VersionListResponseBody在接口系统中示例
以上接口访问路径、请求参数、示例和响应参数、示例如下 如图中所示,list对应json结构为数组。
备注 :genericController没有响应body时,系统会提供默认响应;如果设置了响应body,则以响应body为返回值。
请求有值,且请求报文中如何增加object
<?xml version="1.0" encoding="UTF-8"?>
<bundle>
<packets>
<packet class="packet.generic.RegistserRestRequestBody" parent="com.fastjrun.packet.BaseRequestBody">
<field name="loginId" dataType="String" length="12" canBeNull="false"
remark="登录名" />
<object name="obj" class="packet.generic.RegistserRestRequestBodyObj">
<field name="id" dataType="Long" length="64" canBeNull="false"
remark="版本Id" />
</object>
</packet>
<packet class="packet.generic.VersionListResponseBody" parent="com.fastjrun.packet.BaseResponseBody">
<list name="list" class="packet.generic.Version">
<field name="id" dataType="Long" length="64" canBeNull="false"
remark="版本Id" />
<field name="versionNo" dataType="String" length="64"
canBeNull="false" remark="版本号" />
<field name="versionInfo" dataType="String" length="400"
canBeNull="false" remark="版本信息" />
</list>
</packet>
</packets>
<genericControllers>
<genericController name="AppVersionGenericController"
version="" path="/generic/version/" clientName="AppVersionGenericClient"
clientParent="com.fastjrun.client.BaseGenericClient" remark="版本接口"
tags="基本接口">
<service name="versionService" class="VersionServiceRestGeneric">
<method name="latests" version="" path="latests" remark="最近版本列表">
<request class="packet.generic.RegistserRestRequestBody" />
<response class="packet.generic.VersionListResponseBody" />
</method>
</service>
</genericController>
</genericControllers>
</bundle>
如上所示,RegistserRestRequestBody中增加object节点,name为键值,class为对应类名。 RegistserRestRequestBody在接口系统中示例
请求路径中增加pathParam
<bundle>
<packets></packets>
<genericControllers>
<genericController name="AppVersionGenericController"
version="" path="/generic/version/" clientName="AppVersionGenericClient"
clientParent="com.fastjrun.client.BaseGenericClient" remark="版本接口"
tags="基本接口">
<service name="versionService" class="VersionServiceRestGeneric">
<method name="latests" version="" path="latests" remark="最近版本列表">
<pathvariables>
<pathvariable name="appKey" dataType="String" length="32"
remark="分配客户端key" />
<pathVariable name="accessTime" dataType="Long"
length="11" remark="访问时间戳" />
</pathvariables>
</method>
</service>
</genericController>
</genericControllers>
</bundle>
如上所示,method节点下增加pathvariables节点,pathvariables节点下设置pathvariable节点,pathvariable按接口文档中定义顺序排列在url中。
以上接口访问路径、请求参数、示例和响应参数、示例如下
请求路径中增加queryParam
<bundle>
<packets></packets>
<genericControllers>
<genericController name="AppVersionGenericController"
version="" path="/generic/version/" clientName="AppVersionGenericClient"
clientParent="com.fastjrun.client.BaseGenericClient" remark="版本接口"
tags="基本接口">
<service name="versionService" class="VersionServiceRestGeneric">
<method name="latests" version="" path="latests" remark="最近版本列表">
<parameters>
<parameter name="pageNum" dataType="Integer" length="11"
canBeNull="true" remark="每页返回多少条记录" />
<parameter name="pageIndex" dataType="Integer" length="11"
canBeNull="true" remark="页索引" />
</parameters>
</method>
</service>
</genericController>
</genericControllers>
</bundle>
如上所示,method节点下增加parameters节点,parameters节点下设置parameter节点。
以上接口访问路径、请求参数、示例和响应参数、示例如下
请求头中增加headerParam
<bundle>
<packets></packets>
<genericControllers>
<genericController name="AppVersionGenericController"
version="" path="/generic/version/" clientName="AppVersionGenericClient"
clientParent="com.fastjrun.client.BaseGenericClient" remark="版本接口"
tags="基本接口">
<service name="versionService" class="VersionServiceRestGeneric">
<method name="latests" version="" path="latests" remark="最近版本列表">
<headvariables>
<headvariable name="salt" dataType="String" length="8"
remark="加密盐值" />
<headvariable name="sign" dataType="String" length="32"
remark="签名" />
</headvariables>
</method>
</service>
</genericController>
</genericControllers>
</bundle>
如上所示,method节点下增加headvariables节点,headvariables节点下设置headvariable节点。
以上接口访问路径、请求参数、示例和响应参数、示例如下
其它(略)
还有一些其它示例罗列下,读者可自行试验。
- 报文list节点中嵌套list
- 报文list节点中含object
- 报文object节点中嵌套object
- 报文object节点中含list