0.5INI文件格式说明

  什么是INI接口格式

为了简化接口的开发,避免开发接口时使用JSON等数据格式,我们提供了INI文件交换的接口方式。

接口统一使用常见的ini文件格式,并且使用文件交换的方式进行数据通讯。  

INI格式接口文件优点是:

采用文件格式交换,跟踪更方便。

一个文件中完整定义了协议命令的名称、get参数内容、post参数内容。

支持多层级的数据表达。

扩展方便,参数无长度和数量限制。


  一个典型的提交文件格式如下

[action]

action=do_confirm

[get]

id=11872

state=2

bzid=201512280001

[post]

info=                                                   

hint=菜品红烧大排已估清,未能下单


提交内容中主要为三节的内容

[action]

本节为协议命令,目前只有一个键名:action,值为本次需要调用的协议名称,例如action=do_confirm

[get] 

本节为协议get参数名称,如:id=18187,每个参数使用一个键名和值

[post] 

本节为协议post参数,如info=开台失败


  一个典型的返回文件格式如下

[result]

status=1

info=提交成功

返回文件中有一节[result],所有返回的参数内容都在本节中。


  多级分支树形结构数据组织方式             

在协议中有许多数据需要JSON格式提交的多级树形结构,而INI文件只支持节、键这样两级的数据组织方式,为了解决这个问题,我们做了如下格式约定:

1.当此参数内容为数组内容时,使用data=array:8这样的标识来声明data键为一个数量为8的数组。

2.INI文件中再增加一节,节名为[post_data_0]来表示post节中data数据第0下标数组内容。同样后面几个依次表示为[post_data_1],[post_data_2]为样的格式。                             

3.如果data数组中还有名为list的数组,则在[post_data_0]中定义list=array:5,表示本节中有一个数量为5的list数组。

4.同样list数组的内容放在[post_data_0_list_0]为样的节中。

5.更多层级的树形结构类似,即节名称post_data_0_list_0所表示本节为post节中data键数组第0个中的list数组的第0个数据。


 样例

当POST参数中需要提交一个名为bill的一个结构的数据内容

按JSON格式如下                                      


bill={
    "date": "20151228",
    "time": "120108",
    "table": "88",
    "pscount": 3,
    "bzid": "201512280008",
    "item": [
        {
            "gdsid": "0001050",
            "name": "红烧大排翅",
            "qty": 1,
            "price": 188,
            "amt": 188,
            "ctid": "01001",
            "ctname": "燕鲍翅",
            "unit": "例"
        }
    ],
    "pay": [
        {
            "code": "xj",
            "name": "现金",
            "amt": 180
        },
        {
            "code": "zk",
            "name": "折扣",
            "amt": 8
        }
    ]
}

按INI格式如下:


[action]

action=du_put_bill

[get]

[post]

bill={object}

[post_bill]

date=20151228

time=120108

table=188

pscount=3

bzid=201512280008

item=array:1

pay=array:2

[post_bill_item_0]

gdsid=0001050

name=红烧大排翅

ctid=01001

ctname=燕鲍翅

unit=例

qty=1

price=188

amt=188

[post_bill_pay_0]

code=xj

name=现金

amt=180

[post_bill_pay_1]

code=zk

name=折扣

amt=8