Files
ws2/docs/Nanoweb.md
2026-01-24 13:02:13 +08:00

66 lines
1.7 KiB
Markdown

# Nanoweb
Nanoweb is a full asynchronous web server for micropython created in order to benefit from
a correct ratio between memory size and features.
It is thus able to run on an ESP8266, ESP32, Raspberry Pico, etc...
## Features
* Completely asynchronous
* Declaration of routes via a dictionary or directly by decorator
* Management of static files (see assets_extensions)
* Callbacks functions when a new query or an error occurs
* Extraction of HTML headers
* User code dense and conci
* Routing wildcards
## Installation
You just have to copy the `nanoweb.py` file on the target (ESP32, Nano, etc...).
## Use
See the [example.py](example.py) file for an advanced example where you will be able to:
* Make a JSON response
* Use pages protected with credentials
* Upload file
* Use `DELETE` method
* Read `POST` data
And this is a simpler example:
```Python
import uasyncio
from nanoweb import Nanoweb
naw = Nanoweb()
async def api_status(request):
"""API status endpoint"""
await request.write("HTTP/1.1 200 OK\r\n")
await request.write("Content-Type: application/json\r\n\r\n")
await request.write('{"status": "running"}')
# You can declare route from the Nanoweb routes dict...
naw.routes = {
'/api/status': api_status,
}
# ... or declare route directly from the Nanoweb route decorator
@naw.route("/ping")
async def ping(request):
await request.write("HTTP/1.1 200 OK\r\n\r\n")
await request.write("pong")
loop = uasyncio.get_event_loop()
loop.create_task(naw.run())
loop.run_forever()
```
## Contribute
* Your code must respects `flake8` and `isort` tools
* Format your commits with `Commit Conventional` (https://www.conventionalcommits.org/en/v1.0.0/)