欢迎访问宙启技术站
智能推送

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等。