首页 > 编程语言 >Python 中的 HTTP 编程入门,如何使用 Requests 请求网络

Python 中的 HTTP 编程入门,如何使用 Requests 请求网络

时间:2024-09-22 12:20:58浏览次数:10  
标签:HTTP 请求 Python posts response print requests Requests

Python 中的 HTTP 编程入门

HTTP(超文本传输协议)是现代网络通信的基础,几乎所有的网络应用都依赖于 HTTP 协议进行数据交换。在 Python 中,处理 HTTP 请求和响应非常简单,可以通过内置的 http 模块或第三方库如 requests 来实现。本文将详细介绍 Python 中的 HTTP 编程,包括基本概念、常用操作、RESTful API 的实现等,适合新手学习和理解。

在这里插入图片描述

一、什么是 HTTP?

HTTP(HyperText Transfer Protocol)是一个无状态的应用层协议,主要用于客户端和服务器之间的数据传输。HTTP 协议的主要特点包括:

  • 请求-响应模型:客户端发送请求,服务器处理请求并返回响应。
  • 无状态:每个请求都是独立的,服务器不会记住前一个请求的状态。
  • 支持多种数据格式:HTTP 可以传输文本、图像、视频等多种类型的数据。

1.1 HTTP 请求

HTTP 请求由以下部分组成:

  • 请求行:包含请求方法(如 GET、POST)、请求 URL 和 HTTP 版本。
  • 请求头:包含请求的附加信息(如浏览器类型、接受的内容类型等)。
  • 请求体:可选部分,通常用于 POST 请求,包含要发送的数据。

1.2 HTTP 响应

HTTP 响应由以下部分组成:

  • 状态行:包含 HTTP 版本、状态码(如 200、404)和状态信息。
  • 响应头:包含响应的附加信息(如内容类型、内容长度等)。
  • 响应体:实际的响应数据(如 HTML 页面、JSON 数据等)。

二、Python 中的 HTTP 编程

Python 提供了多个模块和库来处理 HTTP 请求和响应。最常用的库是 requests,它功能强大且易于使用。

2.1 安装 Requests 库

首先,需要确保安装了 requests 库。可以使用以下命令安装:

pip install requests

2.2 使用 Requests 进行 HTTP 请求

下面是一些常见的 HTTP 请求方法及其示例:

2.2.1 GET 请求

GET 请求用于从服务器获取数据。以下是一个简单的 GET 请求示例:

import requests

response = requests.get('https://jsonplaceholder.typicode.com/posts')
print(response.status_code)  # 打印状态码
print(response.json())        # 打印返回的 JSON 数据
2.2.2 POST 请求

POST 请求用于向服务器发送数据。以下是一个简单的 POST 请求示例:

import requests

data = {
    'title': 'foo',
    'body': 'bar',
    'userId': 1
}

response = requests.post('https://jsonplaceholder.typicode.com/posts', json=data)
print(response.status_code)  # 打印状态码
print(response.json())        # 打印返回的 JSON 数据
2.2.3 PUT 请求

PUT 请求用于更新服务器上的资源。以下是一个简单的 PUT 请求示例:

import requests

data = {
    'id': 1,
    'title': 'updated title',
    'body': 'updated body',
    'userId': 1
}

response = requests.put('https://jsonplaceholder.typicode.com/posts/1', json=data)
print(response.status_code)  # 打印状态码
print(response.json())        # 打印返回的 JSON 数据
2.2.4 DELETE 请求

DELETE 请求用于删除服务器上的资源。以下是一个简单的 DELETE 请求示例:

import requests

response = requests.delete('https://jsonplaceholder.typicode.com/posts/1')
print(response.status_code)  # 打印状态码

三、处理 HTTP 响应

在处理 HTTP 响应时,我们通常需要获取状态码、响应头和响应体。下面是一些常用的操作:

3.1 获取状态码

状态码表示请求的处理结果,常见状态码包括:

  • 200:请求成功。
  • 404:请求的资源未找到。
  • 500:服务器内部错误。

获取状态码的示例:

response = requests.get('https://jsonplaceholder.typicode.com/posts')
print(f"状态码: {response.status_code}")

3.2 获取响应头

响应头包含服务器返回的附加信息,可以通过 headers 属性获取:

response = requests.get('https://jsonplaceholder.typicode.com/posts')
print("响应头:")
for key, value in response.headers.items():
    print(f"{key}: {value}")

3.3 获取响应体

响应体是实际的数据内容,可以通过 textjson() 方法获取:

response = requests.get('https://jsonplaceholder.typicode.com/posts')
print("响应体:")
print(response.text)  # 以字符串形式获取
print(response.json())  # 以 JSON 格式获取

四、使用 HTTP 进行 API 调用

RESTful API(Representational State Transfer)是现代网络应用的主要架构风格,允许客户端与服务器之间进行无缝的数据交互。在 Python 中,我们可以使用 requests 库轻松地与 RESTful API 进行交互。

4.1 了解 RESTful API

RESTful API 的基本原则包括:

  • 使用 HTTP 方法(如 GET、POST、PUT、DELETE)表示操作。
  • 使用 URL 表示资源。
  • 采用 JSON 格式进行数据传输。

4.2 实际示例:与 RESTful API 交互

以 JSONPlaceholder API 为例,它是一个免费的在线 REST API,用于测试和原型开发。

4.2.1 获取资源
import requests

response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
print("获取资源:")
print(response.json())
4.2.2 创建资源
import requests

data = {
    'title': 'new post',
    'body': 'this is a new post',
    'userId': 1
}

response = requests.post('https://jsonplaceholder.typicode.com/posts', json=data)
print("创建资源:")
print(response.json())
4.2.3 更新资源
import requests

data = {
    'id': 1,
    'title': 'updated post',
    'body': 'this post has been updated',
    'userId': 1
}

response = requests.put('https://jsonplaceholder.typicode.com/posts/1', json=data)
print("更新资源:")
print(response.json())
4.2.4 删除资源
import requests

response = requests.delete('https://jsonplaceholder.typicode.com/posts/1')
print("删除资源:")
print(f"状态码: {response.status_code}")  # 204 表示成功删除

五、使用 Flask 构建简单的 HTTP 服务器

在 Python 中,我们可以使用 Flask 等框架快速构建 HTTP 服务器。下面是一个简单的 Flask 应用示例,演示如何处理 HTTP 请求。

5.1 安装 Flask

首先,需要确保安装了 Flask。可以使用以下命令安装:

pip install Flask

5.2 创建 Flask 应用

以下是一个简单的 Flask 应用代码:

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/posts', methods=['GET', 'POST'])
def handle_posts():
    if request.method == 'GET':
        # 返回所有帖子
        return jsonify({"posts": []})  # 返回一个空列表作为示例
    elif request.method == 'POST':
        data = request.json
        return jsonify({"message": "Post created", "data": data}), 201

@app.route('/posts/<int:post_id>', methods=['PUT', 'DELETE'])
def handle_post(post_id):
    if request.method == 'PUT':
        data = request.json
        return jsonify({"message": "Post updated", "data": data})
    elif request.method == 'DELETE':
        return jsonify({"message": "Post deleted"}), 204

if __name__ == '__main__':
    app.run(debug=True)

5.3 运行 Flask 应用

将上述代码保存为 app.py,在终端中运行:

python app.py

Flask 默认在 localhost:5000 启动服务。可以使用 curl 或 Postman 测试 API。

六、总结

HTTP 编程是现代网络应用开发的重要基础,Python 提供了强大的库和框架,使得与 HTTP 进行交互变得非常简单。通过本文的介绍,你应该对 Python 中的 HTTP 编程有了初步的了解,包括使用 requests 库发送 HTTP 请求、处理响应、与 RESTful API 交互以及使用 Flask 创建简单的 HTTP 服务器。

掌握了这些基础知识后,你可以在实际项目中应用 HTTP 编程,构建更复杂的网络应用。希望你在 HTTP 编程的学习中获得乐趣,深入探索更多的网络编程知识!

标签:HTTP,请求,Python,posts,response,print,requests,Requests
From: https://blog.csdn.net/chusheng1840/article/details/142434834

相关文章

  • Python 中的 Socket 编程入门
    Python中的Socket编程入门Socket编程是网络编程的重要组成部分,允许计算机通过网络进行通信。在Python中,使用内置的socket模块,开发者可以轻松地实现客户端和服务器之间的交互。本文将详细介绍Python中的Socket编程,包括基本概念、常用操作、TCP和UDP通信的实......
  • python获取同花顺人气数据代码可用股票ETF可转债
    1.获取同花顺人气数据代码可用股票ETF可转债importpandasaspdimportjsonimportrequestsclassths_rq:def__init__(self):'''同花顺人气'''passdefget_headers(self):'''请求......
  • 基于python+django的电影推荐系统设计与实现大数据分析系统
    前言......
  • Rye :一个全面的 Python 项目和包管理工具
    Rye是一个为Python用户设计的全面项目和包管理工具。以下是Rye提供的一些独特功能,这些功能旨在简化Python项目的安装和管理:统一的安装和管理体验:Rye旨在提供一个统一的界面,用于安装和管理Python环境、项目、依赖和虚拟环境。基于pyproject.toml:Rye支持基于pyproject.t......
  • Python 从入门到实战25(模块)
            我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。上篇文章我们讨论了类继承的相关知识。今天我们将学习一下模块的相关基础知识。1、模块概述        p......
  • 计算机汽车销售数据分析—django基于python的汽车销量数据分析
    标题:django基于python的汽车销量数据分析设计并实现一个基于Python的Django汽车销量数据分析系统,旨在为企业提供深入的数据洞察,以支持市场策略制定与产品优化。系统的主要功能模块:1.数据导入与清洗•多源数据集成:支持从Excel、CSV、数据库等多种来源导入汽车销售数据。•......
  • 计算机美食推荐系统—django基于python的美食推荐系统
    标题:django基于python的美食推荐系统设计并实现一个基于Python的Django美食推荐系统,旨在为用户提供个性化且多样化的美食探索体验。系统的核心功能模块:1.用户与美食信息管理•用户注册与资料维护:收集用户基本信息、饮食偏好(如口味、饮食限制、喜爱的菜系)等。•美食数据库......
  • 计算机数据采集软件—django基于Python的数据采集软件的设计与应用
    标题:django基于Python的数据采集软件的设计与应用设计并实现一个基于Python的Django数据采集软件,旨在从网络或其他数据源高效地获取并整理信息。软件的主要功能模块:1.多源数据采集•网页爬虫:根据用户需求定制爬虫,从指定网站自动抓取结构化与非结构化数据。•API集成:对接第......
  • 【最新原创毕设】基于SpringBoot的乐山市景区旅游攻略网+49117(免费领源码)可做计算机毕
    目 录摘要1绪论1.1选题背景与意义1.2开发现状1.3论文结构与章节安排2 乐山市景区旅游攻略网站系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 经济可行性分析2.1.3法律可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分析2.3......
  • 最新毕设-Node.js-游戏网站-031726(免费领项目)可做计算机毕业设计JAVA、PHP、爬虫、APP
    游戏网站的设计摘 要基于网络游戏的蓬勃发展,游戏网站发挥着吸引玩家和提高玩家之间的互动性的重要作用,因而,建设了一个以游戏为中心的游戏官网。 该游戏提供了一个大型的玩家交流互动平台,包括用户管理、游戏社区、游戏信息、分类信息、游戏资讯、论坛分类列表、新闻分类列......