Python中使用http.server.HTTPServer模块实现简单的API服务
发布时间:2024-01-09 20:45:27
Python中可以使用http.server.HTTPServer模块实现简单的API服务。该模块是Python内置的HTTP服务器模块,可以用来处理HTTP请求,包括GET请求和POST请求。
下面是一个使用http.server.HTTPServer模块实现简单API服务的例子:
from http.server import BaseHTTPRequestHandler, HTTPServer
import json
class MyHandler(BaseHTTPRequestHandler):
def do_GET(self):
if self.path == '/api':
self.send_response(200)
self.send_header('Content-type', 'application/json')
self.end_headers()
data = {'message': 'Hello, World!'}
json_data = json.dumps(data)
self.wfile.write(json_data.encode('utf-8'))
else:
self.send_response(404)
self.end_headers()
def do_POST(self):
if self.path == '/api':
content_length = int(self.headers['Content-Length'])
post_data = self.rfile.read(content_length).decode('utf-8')
data = json.loads(post_data)
self.send_response(200)
self.send_header('Content-type', 'application/json')
self.end_headers()
response_data = {'message': 'Hello, ' + data['name'] + '!'}
json_data = json.dumps(response_data)
self.wfile.write(json_data.encode('utf-8'))
else:
self.send_response(404)
self.end_headers()
def run():
address = ('', 8000)
server = HTTPServer(address, MyHandler)
print('Starting server...')
server.serve_forever()
if __name__ == '__main__':
run()
在这个例子中,我们定义了一个名为MyHandler的类,继承自BaseHTTPRequestHandler类。在这个类中,我们重写了do_GET和do_POST两个方法,用来处理GET请求和POST请求。
在do_GET方法中,当访问路径为"/api"时,我们返回一个包含JSON数据的响应,否则返回404状态码。
在do_POST方法中,当访问路径为"/api"时,我们获取POST请求中的数据,并返回一个包含JSON数据的响应,否则返回404状态码。
接下来,我们在run函数中创建一个HTTPServer实例,并指定监听的地址和端口号。然后我们启动服务器,并不断监听请求。
我们可以运行这个脚本,然后使用浏览器或者其他工具发送GET请求或POST请求到"http://localhost:8000/api",就能看到相应的结果。
这个例子只是实现了一个非常简单的API服务,实际应用中可能需要更多的路由和处理逻辑。为了实现更复杂的API服务,可以考虑使用一些第三方库,例如Flask、Django等。
