第六周博客

Json

什么是json

  • JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
  • JSON 是轻量级的文本数据交换格式
  • JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
  • JSON 具有自我描述性,更易理解

为什么使用 JSON?

对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用:

使用 XML
  • 读取 XML 文档
  • 使用 XML DOM 来循环遍历文档
  • 读取值并存储在变量中
使用 JSON
  • 读取 JSON 字符串
  • 用 eval() 处理 JSON 字符串

Json数组格式

Json的数据本身是数组,中括号包裹,数组的元素之间逗号分开.数组元素的数据类型没有限制.

var jsonArray = ["元素1","元素2","元素3"]; //定义数组格式json
console.log(jsonArray[0]); //访问json数组的元素
for(var i = 0 ; i < jsonArray.length ; i++){
    console.log(jsonArray[i]); //遍历数组,访问每个元素
}

Json对象格式

Json的数据本身是对象,大括号包裹.对象采用键值对形式存储,键固定为字符串类型,值是任意类型的数据.键和值使用冒号分开.

var jsonObject = {"k1":"v1","k2":"v2","k3":"v3"}; //定义对象格式json
console.log(jsonObject.k1); //取出键k1对应的值

数组对象相互嵌套格式

数组中的元素是对象
var jsonArray = [
    {"k1":"v1"},{"k2":"v2"}
]; // 定义数组格式json,数组元素是对象
console.log(jsonArray[0].k1); //访问数组0索引的元素,该元素的键k1对应的值
对象中的值是数组
var jsonObject = {
    "k1":["元素1","元素2"],
    "k2":["元素1","元素2"]
}; // 定义对象格式json,键是字符串类型,值是数组
console.log(jsonObject.k1[0]); //访问对象的键是k1,对于的值为数组,数组的0索引元素
你中有我,我中有你
var json = {
    "k1":[
      "元素1",{"key1":"value1"},{"key2":"value2"}  
    ],
    "k2":[
        {"key1":"value1"}
    ]
}; //定义对象格式json,键是字符串,值是数组,数组的元素是对象
console.log(json.k1[1].key1); //访问json对象的键k1,对应的是数组,访问数组的1索引,数组的1索引上的元素是对象,访问key1键对应的值

JSON.parse()

JSON 通常用于与服务端交换数据。

在接收服务器数据时一般是字符串。

我们可以使用 JSON.parse() 方法将数据转换为 JavaScript 对象。

语法
JSON.parse(text[, reviver])

参数说明:

  • **text:**必需, 一个有效的 JSON 字符串。
  • reviver: 可选,一个转换结果的函数, 将为对象的每个成员调用此函数。

JSON.stringify()

JSON 通常用于与服务端交换数据。

在向服务器发送数据时一般是字符串。

我们可以使用 JSON.stringify() 方法将 JavaScript 对象转换为字符串。

语法
JSON.stringify(value[, replacer[, space]])

参数说明:

  • value:

    必需, 要转换的 JavaScript 值(通常为对象或数组)。

  • replacer:

    可选。用于转换结果的函数或数组。

    如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:“”。

    如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。当 value 参数也为数组时,将忽略 replacer 数组。

  • space:

    可选,文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 也可以使用非数字,如:\t。

把 JSON 文本转换为 JavaScript 对象

由于 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。

eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误:

GET请求和POST请求

GET请求

  • 数据传输方式:GET请求的数据通过URL传递,即在URL后面添加查询参数。
  • 数据量限制:由于URL长度有限制,GET请求传递的数据量通常较小
  • 安全性:GET请求的数据会显示在浏览器地址栏中,因此不适合传输敏感信息
  • 幂等性:GET请求具有幂等性,即多次执行相同的GET请求,结果是一致的。
  • 缓存:GET请求可以被浏览器缓存,对于相同的请求,浏览器会直接从缓存中获取数据。

POST请求介绍

  • 数据传输方式:POST请求的数据通过HTTP请求体传递,而不是作为URL的一部分。
  • 数据量:POST请求对传递的数据量没有严格限制,可以发送大量数据
  • 安全性:POST请求的数据不会显示在浏览器地址栏中,相对更安全,但同样需要注意对数据的加密和保护。
  • 幂等性:POST请求通常不具有幂等性,即多次执行相同的POST请求可能会导致不同的结果。
  • 缓存:POST请求不会被浏览器缓存。

GET请求和POST请求的区别

  • 数据传输方式和数据量:GET请求通过URL传递数据,数据量较小;POST请求通过HTTP请求体传递数据,数据量较大。
  • 安全性:GET请求的数据会暴露在URL中,安全性较低;POST请求的数据不会显示在URL中,相对更安全。
  • 幂等性:GET请求具有幂等性,POST请求通常不具有幂等性。
  • 缓存:GET请求可以被浏览器缓存,POST请求不会被缓存。

如何选择GET请求和POST请求

  • 根据数据量选择:如果需要传输的数据量较小,可以选择GET请求;如果需要传输大量数据,应选择POST请求。
  • 根据安全性需求选择:如果传输的数据不敏感或可以公开,可以选择GET请求;如果传输的数据敏感或需要保密,应选择POST请求。
  • 根据操作类型选择:GET请求适用于获取数据或进行查询操作;POST请求适用于提交数据或执行具有副作用的操作(如修改数据、添加记录等)。

前后端 API 规范

前后端API规范主要涉及API的设计、请求和响应格式、状态码、URL格式、参数使用等方面,以确保前后端之间的通信顺畅、数据交换准确。

一、API设计

  • 资源定义:明确定义API所提供的资源,如用户、订单、商品等。每个资源应有唯一的标识,如ID或UUID。
  • URI设计:URI应简洁明了,易于理解和记忆。推荐使用RESTful风格的URI,使用动词+名词的形式表示操作和资源,如/users表示用户资源,/users/{id}表示特定用户。
  • HTTP方法:根据操作类型选择合适的HTTP方法,如GET用于获取数据,POST用于创建数据,PUT用于更新数据,DELETE用于删除数据。

二、请求与响应格式

  • 请求格式:API的请求格式应为标准的JSON格式。请求体中包含所需的数据和参数,参数名应使用驼峰命名法或下划线命名法,并保持一致性。
  • 响应格式:API的响应结果也应为标准的JSON格式。响应体中包含返回的数据和状态信息,如状态码、消息、数据等。

三、状态码

API的响应应包含HTTP状态码,以表示请求的处理结果。常用的状态码包括:

  • 200 OK:请求成功。
  • 400 Bad Request:请求有误,如参数错误或格式不正确。
  • 401 Unauthorized:未授权,如未提供有效的认证信息。
  • 404 Not Found:请求的资源不存在。

四、URL格式

API的URL应具有可读性,结构清晰,有助于URL的自我说明。避免使用过长或复杂的URL,尽量保持简洁。同时,URL中的参数应遵循一定的命名规范,如使用下划线连接单词。

五、参数使用

  • 参数命名:参数命名应清晰明了,具有描述性。推荐使用驼峰命名法或下划线命名法,并保持一致性。
  • 参数类型:明确参数的数据类型和格式,如字符串、数字、布尔值等。对于复杂的参数结构,如嵌套对象或数组,应提供详细的说明和示例。
  • 参数必填性:明确指出哪些参数是必填的,哪些是可选的。对于必填参数,如未提供或格式不正确,应返回相应的错误提示。

六、版本控制

随着业务的发展和需求的变化,API可能会进行迭代和更新。因此,建议使用版本控制机制来管理API的版本。通过在URL中添加版本号(如/v1/users)或使用请求头中的特定字段来指定版本,可以确保客户端能够正确调用对应版本的API。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值