开源语音转文字工具speak2text:模块化设计与本地化部署实践
2026/5/8 18:08:06
想象一下,你在餐厅点菜。你可以:
这就是HTTP请求中最常见的两种方式,让我们用Python来探索它们的差别。
就像在浏览器地址栏输入网址一样,所有参数都显示在URL中。
importrequests# 基本GET请求response=requests.get('https://api.example.com/users')# 带查询参数的GET请求params={'page':2,'limit':10,'search':'python'}response=requests.get('https://api.example.com/users',params=params)# 最终请求的URL会是:https://api.example.com/users?page=2&limit=10&search=pythonprint(response.url)特点:
像填写表单后提交,数据放在请求体中,不在URL中显示。
importrequests# 提交表单数据form_data={'username':'john_doe','email':'john@example.com'}response=requests.post('https://api.example.com/register',data=form_data)# 提交JSON数据(现代API常用)json_data={'product':'laptop','price':999.99,'features':['16GB RAM','512GB SSD']}response=requests.post('https://api.example.com/products',json=json_data)特点:
# PUT - 更新/替换整个资源requests.put('https://api.example.com/users/123',json={'name':'new_name'})# PATCH - 部分更新资源requests.patch('https://api.example.com/users/123',json={'email':'new@email.com'})# DELETE - 删除资源requests.delete('https://api.example.com/users/123')# 在URL中传递requests.get('https://api.example.com/search?q=python&sort=newest')# 或使用params参数(推荐)params={'q':'python','sort':'newest'}requests.get('https://api.example.com/search',params=params)# 类似HTML表单提交form_data={'username':'user','password':'pass'}requests.post(url,data=form_data)# 现代API最常用的方式json_data={'name':'John','age':30}requests.post(url,json=json_data)# 注意:使用json参数会自动设置Content-Type为application/jsonimportrequestsdefcreate_user(user_data):url='https://api.example.com/users'try:# 使用POST发送JSON数据response=requests.post(url,json=user_data,timeout=10)# 检查请求是否成功response.raise_for_status()# 解析JSON响应result=response.json()print(f"用户创建成功!用户ID:{result['id']}")returnresultexceptrequests.exceptions.RequestExceptionase:print(f"创建用户失败:{e}")returnNone# 使用函数new_user={'name':'张三','email':'zhangsan@example.com','role':'admin'}create_user(new_user)| 场景 | 推荐方法 | 示例 |
|---|---|---|
| 获取数据 | GET | 获取用户列表 |
| 创建新资源 | POST | 注册新用户 |
| 更新整个资源 | PUT | 替换用户所有信息 |
| 部分更新资源 | PATCH | 只更新用户邮箱 |
| 删除资源 | DELETE | 删除用户账户 |
ifresponse.status_code==200:print("成功!")elifresponse.status_code==404:print("资源未找到")现在你已经掌握了Python中不同HTTP请求方式的使用方法和区别!就像学会了不同的沟通方式,你可以根据不同的场景选择最合适的请求方法。