介绍
APIs (Application Programming Interfaces) 使软件系统和应用程序能够通信和共享数据。API测试很重要,因为API中的漏洞可能会破坏网站的机密性、完整性和可用性的核心方面。
所有动态网站由APIS组成,因此,像SQL注入这样的经典web漏洞可以归类为API测试。如何测试未被网站前端完全使用的api,重点是RESTful和JSON api。
RESTful和JSON api的区别
-
概念基础
-
REST(Representational State Transfer)是一种软件架构风格,而RESTful API是遵循REST架构风格设计的应用程序接口。它强调使用标准的HTTP方法(如GET、POST、PUT、DELETE)来对资源进行操作。这些资源可以是任何东西,比如用户信息、订单数据等,并且每个资源都有一个唯一的URI(Uniform Resource Identifier)。例如,对于一个在线书店系统,获取某一本书的信息可能通过
GET /books/{book_id}
这样的URI来实现,其中{book_id}
是书的唯一标识符。 -
RESTful API
GET /users/1
POST /users
PUT /users/1
DELETE /users/1
- RESTful API关注的是资源的状态转移,它要求接口设计具有无状态性,即服务器不会在请求之间记住客户端的状态。这样做的好处是提高了系统的可伸缩性和可靠性,因为服务器不需要维护复杂的会话状态。
-
JSON API
-
JSON API是一种基于JSON(JavaScript Object Notation)格式构建API的规范。它主要关注的是数据的格式和如何通过JSON来有效地传输和表示数据。JSON本身是一种轻量级的数据交换格式,易于人类阅读和编写,同时也易于机器解析和生成。例如,一个简单的用户对象在JSON中可能表示为
{"name": "John", "age": 30, "email": "[email protected]"}
。 -
JSON API规定了一系列的规则来确保数据的一致性和可预测性。比如,它定义了如何处理关联数据(如用户和用户所属的组织之间的关系)、如何进行错误处理等。
-
顾名思义,JSON API规定数据必须以JSON格式返回。而且它对JSON数据的结构有更严格的要求。例如,JSON API要求数据包含在一个包含
data
、included
、meta
等键的对象中。其中data
用于存储主要的数据资源,included
用于存储关联的数据资源,meta
用于存储元数据,如分页信息等。这种标准化的结构使得客户端能够更容易地理解和处理返回的数据。 -
RESTful API本身并没有规定数据格式,它可以返回多种格式的数据,如XML、JSON、HTML等。开发人员可以根据具体的需求和场景选择合适的数据格式。不过,在现代的Web开发中,JSON由于其简洁性和广泛的支持,是最常用的数据格式。例如,一个RESTful API可以根据客户端请求的
Accept
头来返回不同格式的数据。如果Accept: application/xml
,则返回XML格式的数据;如果Accept: application/json
,则返回JSON格式的数据。 -
RESTful API
-
JSON API
{
"data": {
"type": "articles",
"id": "1",
"attributes": {
"title": "JSON API Title",
"content": "Content of the article"
},
"relationships": {
"author": {
"data": {
"type": "people",
"id": "1"
}
}
}
}
}
-
请求和响应的处理方式
-
JSON API在请求处理上可以和RESTful API的方式类似,也可以使用HTTP方法进行资源操作。但在响应方面,它更强调数据的完整性和规范性。除了返回符合JSON API标准的数据结构外,还会提供一些关于数据的关系和元数据的信息。例如,在返回一个包含多篇文章的列表时,除了文章本身的数据,还可能会在
included
部分返回文章作者的信息(如果作者信息是关联数据),并且在meta
部分提供关于文章列表的分页信息,如总共有多少页、当前是第几页等。 -
对于请求,RESTful API根据HTTP方法来决定操作类型。如
GET
用于获取资源,POST
用于创建资源,PUT
用于更新资源,DELETE
用于删除资源。在响应方面,除了返回相应的数据(如果有),还可以返回HTTP状态码来表示请求的结果。例如,200 OK
表示请求成功,404 Not Found
表示请求的资源不存在,500 Internal Server Error
表示服务器内部出现错误。而且,RESTful API可以在响应头中提供一些额外的信息,如缓存控制信息等。 -
RESTful API
-
JSON API
-
设计理念和应用场景
-
主要理念是通过标准化的JSON数据格式来提高API的易用性和可预测性。它在移动应用开发和单页应用(SPA)开发中特别受欢迎。因为在这些场景中,客户端需要频繁地获取和处理结构化的JSON数据。例如,一个移动社交应用可以使用JSON API来获取用户的好友列表、动态消息等数据,并且由于JSON API的规范结构,客户端开发人员可以更容易地解析和展示这些数据。
-
设计理念是围绕资源的状态转移,旨在提供一种简单、可扩展、松耦合的方式来构建分布式系统之间的接口。它适用于各种类型的Web服务,特别是那些需要支持多种客户端(如Web浏览器、移动应用、第三方服务等)的系统。例如,一个大型的电商平台可以通过RESTful API来提供商品信息查询、购物车操作、订单处理等功能,方便不同的客户端(如电商网站、手机购物应用)进行接入。
-
RESTful API
-
JSON API
特性 | RESTful API | JSON API |
---|---|---|
核心理念 | 面向资源 | 标准化 JSON 数据交互 |
数据格式 | 可选(JSON、XML 等) | JSON |
灵活性 | 高 | 较低 |
规范化 | 弱(需自定义约定) | 强(有明确规范) |
适用场景 | 通用 API | 复杂数据模型或规范化需求场景 |
来源:豆包,ChatGPT,kimi
原文始发于微信公众号(进击的HACK):RESTful和JSON api的区别
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论