Skip to content

接口请求体-json

接口请求体 - json

简介

JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation),JSON是轻量级的文本数据交换格式(数据传递)

JSON 独立于语言,JSON 使用 Javascript 语法来描述数据对象,JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持 JSON。

比如接口需要上传 JSON 格式或者我们返回的响应信息也是 JSON 格式

JSON 的语法规则和数据类型如下:

  • 数字(整数或浮点数),如 {"age": 18, "score": 70.5}
  • 字符串(只能被双引号包裹),如 {"name": "zs" , "sex": "女"}
  • 逻辑值(true 或 false),如 {"flag": true}
  • 数组(在中括号中),如 {"score": [100, 80, 90]}
  • 对象(在大括号中),如 {"stu1": {"name": "zs", "sex": "女"}, "url": "https://www.baidu.com"}
  • null,如 {"score": null}

JSON 与 Python 字典的区别:

JSON: - 键只能是字符串,值可以是字符串、数字、对象、数组、布尔值或 null

Python 字典: - 键可以是数字、字符串、元组。值可以是数字、字符串、元组、列表或字典

JSON 是一种数据交换格式,比较简洁和通用,而 Python 字典则是 Python 中的数据结构,更灵活且用于在 Python 中进行数据处理及存储。

访问JSON对象值:

myobj={"name":"zs","sal":10000,"add":None}
# 将字典对象转换为 JSON 字符串
json_str = json.dumps(myobj)
print(json_str)

访问JSON数组:

n = {"name": "qingan", "age": 22, "sites": ["Google", "baidu", "Taobao"]}
x = n["sites"][0]
print(x)

常用接口请求体

类型 介绍 Content-type
JSON(JavaScript Object Notation) 轻量级的数据交换格式,最常见的一种类型。 application/json
表单数据(Form Data) 以键值对的形式提交数据,例如通过 HTML 表单提交数据。 application/x-www-form-urlencoded
XML(eXtensible Markup Language) 常用的标记语言,通常用于传递配置文件等数据。 application/xml
text/xml
文件(File) 可以通过请求体上传文件数据,例如上传图片、视频等文件。 上传文件的 MIME 类型,例如 image/jpeg
multipart/form-data
纯文本(Text) 纯文本数据,例如发送邮件、发送短信等场景 text/plain
其他格式 二进制数据、protobuf 等格式

接口中上传的类型除了 json 还有 data,我们可以看请求头内的 content-type参数来判断该上传什么格式:

- 若是 application/json ,为 json 格式,则使用 json 参数

- 若是 application/x-www-form-urlencoded,为表单格式,则使用 data 参数

练习

练习一:

# 导入依赖
import requests

def test_post_json():
    # 定义接口的 url 和 json 格式请求体
    url = "https://httpbin.ceshiren.com/post"
    #定义变量json,将变量json发送到接口的 JSON 格式请求体数据
    json = {
        "post_key": "post_value"
    }
    # 发出 POST 请求,r 接收接口响应
    r = requests.post(url, json=json)
    print(r)
test_post_json()

练习二:

网站:= 高德开放平台

也可以自己在网上搜索免费api网站去练习

import requests
#导入pprint模块
#pprint模块是 Python 中的一个标准库,用于漂亮地打印数据结构,通常用于对复杂数据结构进行格式化的输出
import pprint
api_url = "https://restapi.amap.com/v3/place/text?parameters"

# 请求参数,指定获取METAR报告
params = {
    #key可以直接复制这个值即可
    "key": "e094cccaa9f94c734344ab015d8b4ec6",
    "keywords": "美食",
    "city": "北京",
}

# 发送HTTP GET请求获取数据
response = requests.get(api_url, params=params)
#通过pprint规范一下输出结果
pprint.pprint(response.json())

JSON 类型接口请求体构造(Java)

  • 通过 given().body(jsonData) 添加请求体信息:
    • JSON 对象 。
    • 直接复制 String

示例网址:Litemall

  1. 进入登录页面。
  2. 打开开发者工具。
  3. 输入用户名密码,点击登录。

示例代码:

package com.ceshiren.headers;

import org.junit.jupiter.api.Test;
import java.util.HashMap;
import static io.restassured.RestAssured.given;

/**
 * 通过REST Assured发送JSON格式的POST请求的测试类。
 * 包含两种方式:使用JSONObject构建请求体和直接使用JSON字符串作为请求体。
 */
public class TestJson {

    /**
     * 使用JSONObject构建POST请求体的测试方法。
     * 此方法创建了一个JSONObject对象,向其中添加键值对,然后将其转换为字符串用作请求体。
     */
    @Test
    void objectPostJson() {
        // 创建一个JSONObject实例
        JSONObject requestBody = new JSONObject();
        // 向JSONObject中添加键值对
        requestBody.put("username", "hogwarts");
        requestBody.put("password", "test12345");
        // 使用given()方法设置请求体为JSON字符串
        given()
            .body(requestBody.toString())
            .log().all() // 打印所有的请求信息
            .when()
            .post("https://litemall.hogwarts.ceshiren.com/admin/auth/login") // 发送POST请求
            // 打印全部的响应信息
            .then().log().all();
    }

    /**
     * 直接使用JSON字符串作为POST请求体的测试方法。
     * 此方法定义了一个JSON格式的字符串,直接用作请求体。
     */
    @Test
    void stringPostJson() {
        // 定义一个JSON格式的字符串
        String jsonData = "{\"username\":\"hogwarts\",\"password\":\"test12345\",\"code\":\"\"}";
        // 使用given()方法设置请求体为JSON字符串
        given()
            .body(jsonData)
            .log().all() // 打印所有的请求信息
            .when()
            .post("https://litemall.hogwarts.ceshiren.com/admin/auth/login") // 发送POST请求
            // 打印全部的响应信息
            .then().log().all();
    }
}

总结

  • JSON 语法规则
  • 常用接口请求体
  • JSON 类型接口请求