Skip to content

第1.2章:HTTP 方法和状态码

学习时间: 40分钟


1. HTTP:宇宙交流语言

想象一下,您是飞行控制中心 (ЦУП),而API服务器是宇宙飞船。HTTP(超文本传输协议)是您们之间的无线电通信

每条消息都包含:

  • 方法 → 做什么(例如,“发射探测器”)

  • 状态码 → 操作结果(“探测器发射成功!”)

💡 太空类比: GET /stars = "飞控中心 → 飞船:报告星星的坐标!" 200 OK = "飞船 → 飞控中心:坐标已传输!"


2. 主要HTTP方法

每种方法都像是太空任务的一种命令类型:

方法 太空类比 请求示例 描述
GET 请求数据(望远镜) GET /planets 获取行星列表
POST 发送新对象(发射火箭) POST /satellites 创建新卫星
PUT 完全更新对象(轨道修正) PUT /satellites/iss 更新国际空间站数据
DELETE 销毁对象(脱离轨道) DELETE /debris/123 删除太空垃圾

⚡ 代码示例 (Python):

import requests

# GET: 获取猎鹰9号火箭的数据
# 使用真实的SpaceX API端点
response = requests.get("https://api.spacexdata.com/v4/rockets/5e9d0d95eda69973a809d1ec")
print(response.status_code, response.json()['name']) # 200 Falcon 9

# POST: 在测试API中创建一个新帖子
# 使用jsonplaceholder沙盒服务
new_post = {"title": "Artemis Mission", "body": "Ready for launch", "userId": 1}
response = requests.post("https://jsonplaceholder.typicode.com/posts", json=new_post)
print(response.status_code, response.json()['id'])  # 201 101 (或其它ID)


3. 重要状态码

服务器响应——就像来自航天器的信号:

代码 太空类比 描述
2xx 200 ✅ “任务完成!” 成功
201 🚀 “火箭已发射!” 对象已创建
3xx 301 🌍 “飞控中心已迁移到新地址” 重定向
4xx 400 ❌ “请求中的坐标不正确!” 客户端错误
404 🪐 “未找到行星!” 资源不存在
5xx 500 🔥 “发动机故障!” 服务器错误

4. 实践:处理状态码

始终检查API响应!错误处理示例:

import requests

def get_post_data(post_id):
    """一个用于获取帖子数据并处理状态码的函数。"""
    try:
        response = requests.get(f"https://jsonplaceholder.typicode.com/posts/{post_id}")

        # 检查响应状态码
        if response.status_code == 200:
            print(f"✅ 帖子 {post_id} 的数据已成功获取!")
            return response.json()
        elif response.status_code == 404:
            print(f"⚠️ 帖子 {post_id} 的资源未找到!")
            return None
        else:
            # 处理其他客户端 (4xx) 或服务器 (5xx) 错误
            print(f"🚨 发生错误!状态码:{response.status_code}")
            return None

    except requests.exceptions.RequestException as e:
        # 处理连接错误(例如,没有互联网)
        print(f"🔥 连接错误:{e}")
        return None

# --- 测试我们的函数 ---
print("--- 查找现有帖子 ---")
get_post_data(1)

print("\n--- 查找不存在的帖子 ---")
get_post_data(9999) # 此帖子不存在,预期为404

🔭 真实API示例 (SpaceX): 请求: GET https://api.spacexdata.com/v4/ships/OCISLY 响应: 200 OK + 飞船数据 请求: GET https://api.spacexdata.com/v4/ships/UNICORN 响应: 404 Not Found


巩固测验

1. 应该使用哪种方法来获取星星的数据?

2. 状态码 `201 Created` 表示:

3. 完全更新卫星数据的方法:

4. 状态码 `500 Internal Server Error` 意味着什么?


🚀 本章总结: HTTP方法是您进行太空任务的命令,而状态码则是这些任务的执行报告。请记住:

GET = “获取数据”,POST = “创建新数据”,PUT = “全部更新”,DELETE = “删除” 2xx = 成功,4xx = 你的错误,5xx = 服务器问题

准备发射! 在下一章中,我们将解读来自服务器的“电报”——JSON格式。

📌 实践: 使用 SpaceX API,发送 GET /launches/latest 并研究响应代码!