Starlette resource that helps you follow a layered architecture.
Project description
Starlette-resource
Starlette resource classes that helps you follow a layered architecture.
This module was made to facilitate the implementation of a layered architecture.
The Resource
and WebSocketResource
classes are essentially the same things as Starlette's
HTTPEndpoint
and WebSocketEndpoint
classes. So you can use these classes in the same way.
The difference is that the Resource
and WebSockerResource
must be instantiated before being passed to Starlette's Route
.
Works with Python 3.8+.
Example
from starlette.applications import Starlette
from starlette.requests import Request
from starlette.responses import PlainTextResponse
from starlette.routing import Route, WebSocketRoute
from starlette.websockets import WebSocket
from starlette_resource import Resource, WebSocketResource
class GreetingService:
async def greet(self, name: str) -> str:
return f'Hello {name}!'
class GreetingResource(Resource):
def __init__(self, hello_service: GreetingService) -> None:
self.hello_service = hello_service
async def get(self, req: Request) -> PlainTextResponse:
name = req.path_params['name']
greeting_message = await self.hello_service.greet(name)
return PlainTextResponse(greeting_message)
async def post(self, req: Request):
...
async def put(self, req: Request):
...
async def delete(self, req: Request):
...
class GreetingWebSocketResource(WebSocketResource):
def __init__(self, hello_service: GreetingService) -> None:
self.hello_service = hello_service
async def on_receive(self, websocket: WebSocket, data: str) -> None:
greeting_message = await self.hello_service.greet(data)
await websocket.send_text(greeting_message)
# Services
greeting_service = GreetingService()
# Resources
greeting_resource = GreetingResource(greeting_service)
greeting_websocket_resource = GreetingWebSocketResource(greeting_service)
app = Starlette(
debug=True,
routes=[
Route('/greet/{name}', greeting_resource),
WebSocketRoute('/websocket_greet', greeting_websocket_resource)
]
)
Installation
Simply install from PyPI:
pip install starlette-resource
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file starlette_resource-0.1.1.tar.gz
.
File metadata
- Download URL: starlette_resource-0.1.1.tar.gz
- Upload date:
- Size: 1.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.6.1 CPython/3.11.6 Linux/6.5.8-200.fc38.x86_64
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1bed38bb53c8c51beff9d8ec44c09e3f7224c24b5b5874dc25ca45a1b210a074 |
|
MD5 | 516ef99598b1bd7931d39207e83890b3 |
|
BLAKE2b-256 | 36afd0165bb3bc548cde25b348ee78277f5c92c5920a95acd644306840f7280b |
File details
Details for the file starlette_resource-0.1.1-py3-none-any.whl
.
File metadata
- Download URL: starlette_resource-0.1.1-py3-none-any.whl
- Upload date:
- Size: 2.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.6.1 CPython/3.11.6 Linux/6.5.8-200.fc38.x86_64
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 76d7974745adedf22c2beafb541854834ae2d25b1ea1efcea393c27100c5a761 |
|
MD5 | 150a40bff3e3286151e11187e29c9980 |
|
BLAKE2b-256 | a4e37298765c977a942bf62d4fe521eafadea08b4a51cb9ec3e300ba2f145bc8 |