amweb
A lightweight and complete Python library for building simple web servers.
Features Integrated Web Structure: Includes classes for Request, Response, Router, and Server.
Request Routing: Automatically directs each URL to a specific function using the Router class.
Easy Header Building: Build complex HTTP headers in a single line.
Automatic Request Parsing: Parses incoming requests (GET and POST) automatically.
Standard Status Codes: Supports standard HTTP status codes and their messages.
Installation You can install the library easily using pip once it's published on PyPI:
Bash
pip install amweb How to Use amweb This library is designed to make it simple to build a web server from scratch. All you need is a single Python file to run your server.
Step 1: Create Your Server First, create a Server object. This class handles the low-level socket connections and listens for incoming requests.
Python
main_server.py
from amweb.server import Server
HOST = '0.0.0.0' PORT = 8080
Create your server instance
app = Server(HOST, PORT)
Start the server
if name == "main": app.run() Step 2: Define Your Routes Use the @app.route decorator to connect specific URLs to a function. The decorator takes two arguments: the path (e.g., "/", "/about") and the HTTP method (e.g., "GET", "POST").
Python
from amweb.response import Response
@app.route("/", "GET") def index_page(client_connection, request): html_content = "
Welcome to amweb!
" # The handler function takes two arguments: # 1. client_connection: for sending the response # 2. request: the parsed request object# Use Response to build and send the final data
response = Response(200, "text/html", html_content)
client_connection.sendall(response.build())
@app.route("/contact", "GET") def contact_page(client_connection, request): html_content = "Contact us at my_email@example.com" response = Response(200, "text/html", html_content) client_connection.sendall(response.build()) Step 3: Handle Requests The request object provides easy access to all the information from the browser. You can access headers, the request method, and the path.
Python
@app.route("/user-info", "GET") def user_info(client_connection, request): # Access a header (e.g., User-Agent) user_agent = request.headers.get("User-Agent", "Not specified")
# Access the request path
path = request.path
# Access the request method (GET, POST)
method = request.method
# You can also get POST data from request.body
# ...
Step 4: Build a Response Use the Response class to build the final HTTP response. It handles everything for you and is a much better way than manually writing the headers.
Python
from amweb.response import Response
This creates a complete HTTP response with headers and body
my_response = Response( 200, # Status Code (e.g., 200) "text/html", # Content Type "
Success!
" # Content )Use the .build() method to get the final bytes to send
final_bytes = my_response.build() License This project is licensed under the MIT License.
Release files for amweb 0.0.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| amweb-0.0.5.tar.gz | 10.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| amweb-0.0.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.9 kB
Release files / amweb-0.0.5.tar.gz
| Download URL | amweb-0.0.5.tar.gz |
|---|---|
| Size | 10.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a5db5a9e9ba34f2ff89bd8f22f93cf08a8daa1db0fb3af8867b49ee874a3c1b1
|
|
BLAKE2b-256 checksum How to use checksums |
f95c38f9aa18529423de5e7b69d986f66add00861d6b21a725c1dc736bdf175f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.11
|
Release files / amweb-0.0.5-py3-none-any.whl
| Download URL | amweb-0.0.5-py3-none-any.whl |
|---|---|
| Size | 11.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0c4bb2c6fa5691e9188d9cc14e22d40be90427f7513fad04f7f4f2dad1cbfeb2
|
|
BLAKE2b-256 checksum How to use checksums |
225005091bc016340a5b8c02cf4b819e11fa2afb7006ecba5b21734c5e61724a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.11
|