前言:接口在软件设计时,通常指的是不同系统之间进行数据交互的一种协议。双方系统根据接口定义的字段及类型(规范)进行数据交互。而json作为一种轻量级的语言更适合完成数据交互。接口协议就是用来定义数据交互的规范。json作为数据的载体按照协议规范进行数据交互。
一、了解JSON
JSON是一种类似 XML的语言,是用了存储和交换文本信息的语法。它的全称为JavaScript Object Notation(JavaScript 对象表示法)。与xml对比,它更小、更快,更易解析。
不同系统之间数据交互的手段。主要是通过json格式去进行数据交互。两个系统之间需要制定一套详细的接口规范支撑后续的设计。
二、json语法及案例
json一般包括以下几种表达方式:
1、JSON对象的表示:采用key/value的方式表示对象。对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。表示方法:{key1:value1,key2:value2,......};
2、JSON数组表示:数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。表示方法:[value1,value2,value3,......];
3、对象数组标识方法:综合1,2,表示方法:
[{key1:value1,key2:value2},{key3:value3,key4:value4}{key5:value5,key6:value6},......]
4、value类型:
string:"string";
number:1265.12;
object:{id:"123",name:"chen"};
array:["name",12323,"2009-11-12"];
boolean:true,false;
null:null;
三、不同系统之间的数据交互为什么会选择用json的格式?
易生成,易解析。
四、接口设计规范
1、http传输中需要遵循以下规范:在请求报文中:content-type=application/json;charset=UTF-8。在应答报文中:content-type=application/json。
2、接口元素约束条件:
符号 | 含义 |
? | 0..1,可选项,表示可有可无, |
* | 0..n,可以没有,也可以有多项 |
+ | 1..n,至少有1项,也可以有多项 |
1 | 数字1,代表必须且只能填1项 |
3、实例说明:
{
"appId":"A",
"timestamp":"20160910122321",
"messageId":"80e5adaec47d41748628e1715d903ad0",
"access_token":"76gd7fyg87dyf87y8erhdfgy93ytgfsh",
"sessionId":"2378947892374324",
"content":{
"inputPara":{
"customerID" : 100000059111
}
}
}
4、接口定义样例参考如下:
父元素名称 | 元素名称 | 约束 | 类型 | 宽度 | 描述 | 取值说明 |
content | emailList | + | - | 邮件组 | ||
emailList | | 1 | String | 50 | 邮件 | |
content | tilte | 1 | String | 100 | 邮件标题 | |
content | content | 1 | string | 50000 | 邮件内容 | |
content | emailCode | 1 | string | 10 | 邮箱编码 |
报文样例:
{
"messageId": "f806b095ba764412adcedefd64b65e9d",
"sessionId": "111111",
"timestamp": "20160711094442",
"content": {
"emailList":[{
"email":"lixin15@asiainfo.com"
},
{
"email":"867244890@qq.com"
}],
"tilte":"测试主题9999",
"content":"测试内容99999",
"emailCode":"dq1"
},
"appId": "A2016120614401100003"
}
五、接口调用方式
接口调用的方式一般包括以下几个:
1.系统间采用远程函数调用(RFC)的方式进行数据交互:实际上就是一个系统提供可供其他系统调用的函数,当其他系统传输正确的参数并调用相应函数,则可以在该系统中执行相应的系统功能。这就是最为常见的,使用远程函数调用的系统接口方式。
2.系统间采用中间数据库的方式进行数据交互:系统过多的话,如果多个系统之间通过函数调用,会导致接口的复杂性过高。且函数调用接口,必须要求接口两端的功能均可用,这就有可能会影响业务的及时性。工作机制如下:多个系统之间的建立数据平台(就是个专门用于存储系统间交互数据的数据库),业务系统不会直接与另一个业务系统进行数据交互,而是将数据传给数据平台,另一个业务系统如果需要,则去数据平台取数据。比如,运营商内部系统,会建立一系列中心,比如订单中心、账号中心、产商品中心,用于记录各个业务产生的数据。
3.系统间采用传输文件的方式进行数据交互:数据发送方的系统将数据写入到一个文件上,再将文件传输给数据接受的方系统;数据接收方系统将读取文件中所承载的数据,并根据数据执行相应的系统功能,从而实现系统间数据交互的目的。
文件接口的系统架构设计:包括业务系统-业务系统、业务系统-文件服务器-业务系统、业务系统-文件服务器-文件服务器-业务系统。引用来源:https://blog.csdn.net/qq_33641781/article/details/90245933?
六、json如何解析?
json的解析,顾名思义就是将接口传的数据用代码获取到。解析的前提是,明白json语法。举例如下:
{
"personData": [
{
"age": 12,
"name": "nate",
"schoolInfo": [
{
"School_name": "清华"
},
{
"School_name": "北大"
}
],
"url": "http://pic.yesky.com/uploadImages/2014/345/36/E8C039MU0180.jpg"
},
{
"age": 24,
"name": "jack",
···
}
],
"result": 1
}
解析json:对象数组的需要按照list来循环获取。对象需要建立对象获取。 如下: