📝 Reflect latest changes in getting started docs
This commit is contained in:
parent
82fe75b0c7
commit
3165243755
1 changed files with 43 additions and 11 deletions
54
README.md
54
README.md
|
|
@ -1,31 +1,33 @@
|
|||
# OhMyAPI
|
||||
|
||||
> Django-flavored application scaffolding and management layer around FastAPI+TortoiseORM.
|
||||
> Think: Micro-Django, but API-first, less clunky and 100% async.
|
||||
|
||||
OhMyAPI is a Django-flavored web-application scaffolding framework and management layer.
|
||||
Built around FastAPI and TortoiseORM, it 100% async.
|
||||
It is *blazingly* fast and comes with batteries included.
|
||||
Built around FastAPI and TortoiseORM, it is 100% async.
|
||||
|
||||
Features:
|
||||
It is ***blazingly fast***, ***fun*** to use and comes with ***batteries included***!
|
||||
|
||||
**Features**
|
||||
|
||||
- Django-like project-layout and -structure
|
||||
- Django-like prject-level settings.py
|
||||
- Django-like models via TortoiseORM
|
||||
- Django-like `Model.Meta` class for model configuration
|
||||
- Easily convert your models to `pydantic` models via `Model.Schema`
|
||||
- Easily convert your query results to `pydantic` models via `Model.Schema`
|
||||
- Django-like migrations (makemigrations & migrate) via Aerich
|
||||
- Django-like CLI for interfacing with your projects (startproject, startapp, shell, serve, etc)
|
||||
- Various optional builtin apps
|
||||
- Django-like CLI tooling (`startproject`, `startapp`, `shell`, `serve`, etc)
|
||||
- Various optional builtin apps you can hook into your project
|
||||
- Highly configurable and customizable
|
||||
- 100% async
|
||||
|
||||
---
|
||||
|
||||
## Getting started
|
||||
|
||||
**Creating a Project**
|
||||
|
||||
```
|
||||
pip install ohmyapi
|
||||
pip install 'ohmyapi[auth]' # optionally add PyJWT and all necessary crypto deps
|
||||
ohmyapi startproject myproject
|
||||
cd myproject
|
||||
```
|
||||
|
|
@ -56,7 +58,7 @@ Create a new app by:
|
|||
ohmyapi startapp myapp
|
||||
```
|
||||
|
||||
This will lead to the following directory structure:
|
||||
This will create the following directory structure:
|
||||
|
||||
```
|
||||
myproject/
|
||||
|
|
@ -71,6 +73,8 @@ myproject/
|
|||
|
||||
Add 'myapp' to your `INSTALLED_APPS` in `settings.py`.
|
||||
|
||||
### Models
|
||||
|
||||
Write your first model in `myapp/models.py`:
|
||||
|
||||
```python
|
||||
|
|
@ -84,11 +88,13 @@ class Person(Model):
|
|||
age: int = field.IntField(min=0)
|
||||
```
|
||||
|
||||
### API Routes
|
||||
|
||||
Next, create your endpoints in `myapp/routes.py`:
|
||||
|
||||
```python
|
||||
from fastapi import APIRouter, HTTPException
|
||||
from tortoise.exceptions import DoesNotExist
|
||||
from ohmyapi.router import APIRouter, HTTPException
|
||||
from ohmyapi.db.exceptions import DoesNotExist
|
||||
|
||||
from .models import Person
|
||||
|
||||
|
|
@ -175,9 +181,35 @@ INSTALLED_APPS = [
|
|||
JWT_SECRET = "t0ps3cr3t"
|
||||
```
|
||||
|
||||
After restarting your project you will have access to the `ohmyapi_auth` app.
|
||||
It comes with a `User` and `Group` model, as well as endpoints for JWT auth.
|
||||
|
||||
Create a super-user:
|
||||
|
||||
```
|
||||
ohmyapi createsuperuser
|
||||
```
|
||||
|
||||
## Permissions
|
||||
|
||||
### API-Level
|
||||
|
||||
Use FastAPI's `Depends` pattern to implement API-level access-control.
|
||||
|
||||
|
||||
In your `routes.py`:
|
||||
|
||||
```python
|
||||
from ohmyapi.router import APIRouter, Depends
|
||||
|
||||
from ohmyapi_auth.models import User
|
||||
from ohmyapi_auth.permissions import require_authenticated
|
||||
|
||||
router = APIRouter(prefix="/myapp")
|
||||
|
||||
|
||||
@router.get("/")
|
||||
def must_be_authenticated(user: User = Depends(require_authenticated)):
|
||||
return {"user": user}
|
||||
```
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue