发表人:bgp_luogang 2022-04-19 09:13:28 最新回复: 2022-04-19 09:13:28
1、什么是Restful
Restful是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义,作业调度系统采用的是JSON格式的数据传递。
REST(Representational State Transfer的缩写,译为“表现层状态转移”)是Roy Thomas Fielding在他2000年的博士论文中提出了一种新的软件架构规则。RESTful架构就是一组协作的符合REST原则的架构约束。RESTful API就是符合REST约束的网络应用接口。RESTful的特点有以下四项:
(1)数据存储与数据操作分离。REST以客户端-服务器架构为基础,分离了客户端与服务器。这种架构分开了操作数据接口和数据存储,简化了服务器组件,从而提高系统的可伸缩性。
(2)无状态。REST在客户端-服务器通信中添加一个约束,即“通信在本质上必须是无状态的”。因此每个网络通信请求都必须包含理解该请求的所有资源信息。
(3)统一的接口。REST架构规定了客户端和服务器之间的交互通信具有统一的接口。REST充分利用了HTTP(超文本转移协议)请求的语义规范请求动作,常用的四种方法:GET(获取)、POST(创建)、PUT(更新)、DELETE(删除)。
(4)资源的唯一标识。REST对于信息的核心抽象就是资源。统一资源标识符(URI)是Web架构里最小的也是最重要的元素。REST规定每一个URI代表一种资源,要获取这个资源,就访问它的URI,因此URI就是每一个资源的独一无二的标识符。
2、JSON简介
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型。
对象:对象在 JS 中是使用花括号包裹 {} 起来的内容,数据结构为 {key1:value1, key2:value2, ...} 的键值对结构。在面向对象的语言中,key 为对象的属性,value 为对应的值。键名可以使用整数和字符串来表示。值的类型可以是任意类型。
数组:数组在 JS 中是方括号 [] 包裹起来的内容,数据结构为 ["java", "javascript", "vb", ...] 的索引结构。在 JS 中,数组是一种比较特殊的数据类型,它也可以像对象那样使用键值对,但还是索引使用得多。同样,值的类型可以是任意类型。
简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在网络或者程序之间轻松地传递这个字符串,并在需要的时候将它还原为各编程语言所支持的数据格式,例如在 PHP 中,可以将 JSON 还原为数组或者一个基本对象。在用到AJAX时,如果需要用到数组传值,这时就需要用JSON将数组转化为字符串。
对象是一个无序的“‘名称/值’对”集合。一个对象以{左括号开始,}右括号结束。每个“名称”后跟一个:冒号;“‘名称/值’ 对”之间使用,逗号分隔。
{"firstName": "Brett", "lastName": "McLaughlin"}
和普通的 JS 数组一样,JSON 表示数组的方式也是使用方括号 []。
{
"people":[
{
"firstName": "Brett",
"lastName":"McLaughlin"
},
{
"firstName":"Jason",
"lastName":"Hunter"
}
]
}
这不难理解。在这个示例中,只有一个名为 people的变量,值是包含两个条目的数组,每个条目是一个人的记录,其中包含名和姓。上面的示例演示如何用括号将记录组合成一个值。当然,可以使用相同的语法表示更过多的值(每个值包含多个记录)。
在处理 JSON 格式的数据时,没有需要遵守的预定义的约束。所以,在同样的数据结构中,可以改变表示数据的方式,也可以使用不同方式表示同一事物。
如前面所说,除了对象和数组,你也可以简单地使用字符串或者数字等来存储简单的数据,但这样并没有多大意义。
3、需要的头文件及连接的库
pro文件中设置的include路径及连接的动态库实例:
INCLUDEPATH += ${NGP}/include/ncld
INCLUDEPATH += ${NGP}/include/ncld/tetris
INCLUDEPATH += ${SUPPORTROOT}/json/include
LIBS += -L${NGP}/libso/ncld –lhttpcall
cpp文件中include的文件:
#include "http_call.hpp"