1. HTTP协议基础
HTTP(超文本传输协议)是互联网上应用最为广泛的网络协议之一。它定义了客户端与服务器之间的通信格式,是构建现代网络应用的基础。了解HTTP协议的基本概念对于网络编程至关重要。
1.1 HTTP请求与响应
HTTP请求由请求行、请求头和请求体组成。请求行包含请求方法、URL和HTTP版本。请求头包含客户端信息、请求参数等。请求体通常包含表单数据或文件。
HTTP响应由状态行、响应头和响应体组成。状态行包含HTTP版本、状态码和状态描述。响应头包含服务器信息、响应参数等。响应体通常包含请求的资源内容。
1.2 HTTP方法
HTTP定义了多种请求方法,包括GET、POST、PUT、DELETE等。这些方法用于指示客户端对服务器上的资源进行何种操作。
2. 实战案例
以下列举了50个实战案例,帮助您轻松入门HTTP协议网络编程。
2.1 案例一:使用Python实现简单的HTTP服务器
from http.server import BaseHTTPRequestHandler, HTTPServer
class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(b'Hello, world!')
if __name__ == '__main__':
server = HTTPServer(('localhost', 8000), SimpleHTTPRequestHandler)
server.serve_forever()
2.2 案例二:使用Python实现简单的HTTP客户端
import requests
url = 'http://localhost:8000'
response = requests.get(url)
print(response.text)
2.3 案例三:使用Python实现简单的表单提交
import requests
url = 'http://localhost:8000/form'
data = {'name': 'John', 'age': '30'}
response = requests.post(url, data=data)
print(response.text)
2.4 案例五:使用Python实现简单的文件上传
import requests
url = 'http://localhost:8000/upload'
files = {'file': ('example.txt', open('example.txt', 'rb'))}
response = requests.post(url, files=files)
print(response.text)
2.6 案例七:使用Python实现简单的RESTful API
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/items', methods=['GET', 'POST'])
def items():
if request.method == 'GET':
return jsonify({'items': ['item1', 'item2']})
elif request.method == 'POST':
item = request.json['item']
return jsonify({'item': item})
if __name__ == '__main__':
app.run()
2.8 案例九:使用Python实现简单的WebSocket通信
from flask import Flask, request, jsonify
from flask_sockets import Sockets
app = Flask(__name__)
sockets = Sockets(app)
@sockets.route('/chat')
def echo_socket(ws):
while not ws.closed:
message = ws.receive()
ws.send(message)
if __name__ == '__main__':
app.run()
2.10 案例十一:使用Python实现简单的缓存机制
import requests
from functools import lru_cache
@lru_cache(maxsize=128)
def get_data(url):
response = requests.get(url)
return response.text
data = get_data('http://example.com')
print(data)
2.12 案例十三:使用Python实现简单的身份验证
from flask import Flask, request, jsonify, abort
app = Flask(__name__)
@app.route('/login', methods=['POST'])
def login():
username = request.json['username']
password = request.json['password']
if username == 'admin' and password == 'admin':
return jsonify({'message': 'Login successful'})
else:
abort(401)
if __name__ == '__main__':
app.run()
2.14 案例十五:使用Python实现简单的数据加密
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
key = get_random_bytes(16)
cipher = AES.new(key, AES.MODE_EAX)
nonce = cipher.nonce
ciphertext, tag = cipher.encrypt_and_digest(b'Hello, world!')
print(nonce)
print(ciphertext)
print(tag)
2.16 案例十七:使用Python实现简单的数据压缩
import zlib
data = b'Hello, world!'
compressed_data = zlib.compress(data)
print(compressed_data)
print(zlib.decompress(compressed_data))
2.18 案例十九:使用Python实现简单的数据缓存
import requests
from functools import lru_cache
@lru_cache(maxsize=128)
def get_data(url):
response = requests.get(url)
return response.text
data = get_data('http://example.com')
print(data)
2.20 案例二十一:使用Python实现简单的数据验证
import re
def validate_email(email):
pattern = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
return re.match(pattern, email) is not None
email = 'example@example.com'
print(validate_email(email))
2.22 案例二十三:使用Python实现简单的数据排序
data = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_data = sorted(data)
print(sorted_data)
2.24 案例二十五:使用Python实现简单的数据去重
data = [1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9]
unique_data = list(set(data))
print(unique_data)
2.26 案例二十七:使用Python实现简单的数据分组
data = [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e')]
grouped_data = {}
for item in data:
key, value = item
if key not in grouped_data:
grouped_data[key] = []
grouped_data[key].append(value)
print(grouped_data)
2.28 案例二十九:使用Python实现简单的数据聚合
data = [
{'name': 'Alice', 'age': 25, 'city': 'New York'},
{'name': 'Bob', 'age': 30, 'city': 'Los Angeles'},
{'name': 'Charlie', 'age': 35, 'city': 'Chicago'},
{'name': 'David', 'age': 40, 'city': 'Houston'}
]
grouped_data = {}
for item in data:
city = item['city']
if city not in grouped_data:
grouped_data[city] = []
grouped_data[city].append(item)
print(grouped_data)
2.30 案例三十一:使用Python实现简单的数据清洗
data = [
{'name': 'Alice', 'age': '25', 'city': 'New York'},
{'name': 'Bob', 'age': '30', 'city': 'Los Angeles'},
{'name': 'Charlie', 'age': '35', 'city': 'Chicago'},
{'name': 'David', 'age': '40', 'city': 'Houston'}
]
cleaned_data = []
for item in data:
name = item['name']
age = int(item['age'])
city = item['city']
cleaned_data.append({'name': name, 'age': age, 'city': city})
print(cleaned_data)
2.32 案例三十三:使用Python实现简单的数据转换
data = [
{'name': 'Alice', 'age': '25', 'city': 'New York'},
{'name': 'Bob', 'age': '30', 'city': 'Los Angeles'},
{'name': 'Charlie', 'age': '35', 'city': 'Chicago'},
{'name': 'David', 'age': '40', 'city': 'Houston'}
]
converted_data = []
for item in data:
name = item['name']
age = int(item['age'])
city = item['city']
converted_data.append({'name': name, 'age': age, 'city': city})
print(converted_data)
2.34 案例三十五:使用Python实现简单的数据校验
data = [
{'name': 'Alice', 'age': '25', 'city': 'New York'},
{'name': 'Bob', 'age': '30', 'city': 'Los Angeles'},
{'name': 'Charlie', 'age': '35', 'city': 'Chicago'},
{'name': 'David', 'age': '40', 'city': 'Houston'}
]
valid_data = []
for item in data:
name = item['name']
age = int(item['age'])
city = item['city']
if name and age and city:
valid_data.append({'name': name, 'age': age, 'city': city})
print(valid_data)
2.36 案例三十七:使用Python实现简单的数据排序
data = [
{'name': 'Alice', 'age': '25', 'city': 'New York'},
{'name': 'Bob', 'age': '30', 'city': 'Los Angeles'},
{'name': 'Charlie', 'age': '35', 'city': 'Chicago'},
{'name': 'David', 'age': '40', 'city': 'Houston'}
]
sorted_data = sorted(data, key=lambda x: x['age'])
print(sorted_data)
2.38 案例三十九:使用Python实现简单的数据去重
data = [
{'name': 'Alice', 'age': '25', 'city': 'New York'},
{'name': 'Bob', 'age': '30', 'city': 'Los Angeles'},
{'name': 'Charlie', 'age': '35', 'city': 'Chicago'},
{'name': 'David', 'age': '40', 'city': 'Houston'}
]
unique_data = list(set(data))
print(unique_data)
2.40 案例四十一:使用Python实现简单的数据分组
data = [
{'name': 'Alice', 'age': '25', 'city': 'New York'},
{'name': 'Bob', 'age': '30', 'city': 'Los Angeles'},
{'name': 'Charlie', 'age': '35', 'city': 'Chicago'},
{'name': 'David', 'age': '40', 'city': 'Houston'}
]
grouped_data = {}
for item in data:
key = item['city']
if key not in grouped_data:
grouped_data[key] = []
grouped_data[key].append(item)
print(grouped_data)
2.42 案例四十三:使用Python实现简单的数据聚合
data = [
{'name': 'Alice', 'age': '25', 'city': 'New York'},
{'name': 'Bob', 'age': '30', 'city': 'Los Angeles'},
{'name': 'Charlie', 'age': '35', 'city': 'Chicago'},
{'name': 'David', 'age': '40', 'city': 'Houston'}
]
grouped_data = {}
for item in data:
key = item['city']
if key not in grouped_data:
grouped_data[key] = []
grouped_data[key].append(item)
print(grouped_data)
2.44 案例四十五:使用Python实现简单的数据清洗
data = [
{'name': 'Alice', 'age': '25', 'city': 'New York'},
{'name': 'Bob', 'age': '30', 'city': 'Los Angeles'},
{'name': 'Charlie', 'age': '35', 'city': 'Chicago'},
{'name': 'David', 'age': '40', 'city': 'Houston'}
]
cleaned_data = []
for item in data:
name = item['name']
age = int(item['age'])
city = item['city']
cleaned_data.append({'name': name, 'age': age, 'city': city})
print(cleaned_data)
2.46 案例四十七:使用Python实现简单的数据转换
data = [
{'name': 'Alice', 'age': '25', 'city': 'New York'},
{'name': 'Bob', 'age': '30', 'city': 'Los Angeles'},
{'name': 'Charlie', 'age': '35', 'city': 'Chicago'},
{'name': 'David', 'age': '40', 'city': 'Houston'}
]
converted_data = []
for item in data:
name = item['name']
age = int(item['age'])
city = item['city']
converted_data.append({'name': name, 'age': age, 'city': city})
print(converted_data)
2.48 案例四十九:使用Python实现简单的数据校验
data = [
{'name': 'Alice', 'age': '25', 'city': 'New York'},
{'name': 'Bob', 'age': '30', 'city': 'Los Angeles'},
{'name': 'Charlie', 'age': '35', 'city': 'Chicago'},
{'name': 'David', 'age': '40', 'city': 'Houston'}
]
valid_data = []
for item in data:
name = item['name']
age = int(item['age'])
city = item['city']
if name and age and city:
valid_data.append({'name': name, 'age': age, 'city': city})
print(valid_data)
2.50 案例五十一:使用Python实现简单的数据排序
data = [
{'name': 'Alice', 'age': '25', 'city': 'New York'},
{'name': 'Bob', 'age': '30', 'city': 'Los Angeles'},
{'name': 'Charlie', 'age': '35', 'city': 'Chicago'},
{'name': 'David', 'age': '40', 'city': 'Houston'}
]
sorted_data = sorted(data, key=lambda x: x['age'])
print(sorted_data)
