Menu
CoddyTech

发送 JSON

Coddy 使用终端进行网络通信 课程的第 35 课,共 47 课。

如今,大多数 API 需要 JSON,而不是表单编码。需要改动两处,而忘记第二处是这一部分最常见的错误。

curl -s -H 'Content-Type: application/json' \
     -d '{"name":"ada"}' http://127.0.0.1:9125/users

首先,请求正文要改为 JSON。其次,你必须通过 Content-Type 标头声明这一点,否则 curl 仍会将请求正文标记为表单数据。然后,服务器会尝试将 JSON 解析为 key=value 键值对,并拒绝该请求,通常会返回 400。

所以,当 API 提示你的 JSON 无效,而你看起来觉得它完全有效时,先检查请求头,再检查 JSON。

也要注意引号。JSON 中有很多双引号,所以用单引号括住整个请求体,shell 就不会改动它。

challenge icon

挑战

专家

发送真实的 JSON,并证明它被正确标记。

  1. 在端口 9125 上启动捕获监听器
  2. 将请求正文 {"name":"ada"} 以 JSON 格式 POST 到 /users
  3. 打印 req.txt 中的 Content-Type 行

预期输出:

Content-Type: application/json

亲手试试

终端
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

使用终端进行网络通信中的所有课

自己练习: Terminal 在线编辑器