Untitled
unknown
plain_text
a year ago
2.5 kB
28
Indexable
import http.server
import socketserver
import json
from urllib.parse import urlparse, parse_qs
# Mock database
mock_db = {
"users": [
{"id": 1, "name": "Alice", "email": "alice@example.com"},
{"id": 2, "name": "Bob", "email": "bob@example.com"},
{"id": 3, "name": "Charlie", "email": "charlie@example.com"}
],
"products": [
{"id": 1, "name": "Laptop", "price": 999.99},
{"id": 2, "name": "Smartphone", "price": 499.99},
{"id": 3, "name": "Headphones", "price": 99.99}
]
}
class MyHandler(http.server.SimpleHTTPRequestHandler):
def _set_headers(self, status_code=200):
self.send_response(status_code)
self.send_header('Content-type', 'application/json')
self.end_headers()
def _read_content(self):
content_length = int(self.headers['Content-Length'])
return self.rfile.read(content_length)
def do_GET(self):
parsed_path = urlparse(self.path)
path = parsed_path.path
query = parse_qs(parsed_path.query)
if path == '/users':
data = mock_db['users']
if 'id' in query:
user_id = int(query['id'][0])
data = next((user for user in data if user['id'] == user_id), None)
if data is None:
self._set_headers(404)
response = {"error": "User not found"}
else:
response = data
else:
response = data
elif path == '/products':
data = mock_db['products']
if 'id' in query:
product_id = int(query['id'][0])
data = next((product for product in data if product['id'] == product_id), None)
if data is None:
self._set_headers(404)
response = {"error": "Product not found"}
else:
response = data
else:
response = data
else:
self._set_headers(404)
response = {"error": "Not found"}
self._set_headers()
self.wfile.write(json.dumps(response).encode())
def do_DELETE(self):
self._set_headers()
response = {"message": "This is a DELETE request response"}
self.wfile.write(json.dumps(response).encode())
PORT = 8000
with socketserver.TCPServer(("", PORT), MyHandler) as httpd:
print(f"Serving at port {PORT}")
httpd.serve_forever()Editor is loading...
Leave a Comment