Write REST API quickly
Project description
frest
How to create a REST API very quickly.
Installation
Install frest by pip package (you must have Python>=3.6). In this example I'm using virtualev, a tool for virtual environment creation.
$ virtualenv env
$ source env/bin/activate
(env) $ pip install frest
Use
Create a project
(env) $ frest --init project
__ _
/ _| | |
| |_ _ __ ___ ___| |_
| _| '__/ _ \/ __| __|
| | | | | __/\__ \ |_
|_| |_| \___||___/\__|
Create project/... OK
Create project/__init__.py... OK
It will create a project tree folder like this one:
- database.py
A file with DATABASE_URI, database path, default is
sqlite:///database.db. - mail.py A file with mail configuration: server, port, password etc.
- app.py A file with routes and mail/database configuration.
- wsgi.py File used for production.
Create first app
Inside project folder, we start to create a new app. For example, we want to store books inside our database.
(env) $ cd project/
(env) $ frest --startapp book
It will print something like this:
__ _
/ _| | |
| |_ _ __ ___ ___| |_
| _| '__/ _ \/ __| __|
| | | | | __/\__ \ |_
|_| |_| \___||___/\__|
Create scheme/... OK
Create scheme/book... OK
Create scheme/book/__init__.py... OK
Create model for book...
Fields id, created_at, updated_at are default on every new model, you can delete it from model file
Create field? (Y/n):
Now we have to define a model for our book, using 6 data types: integer, string, text, datetime, float, bool.
This is an example of our book with name and pubblication date:
Choose field name: name
Choose field type: int, str, text, datetime, float, bool str
Choose string size: 20
Field is nullable? (Y/n): n
Create new field? (Y/n):
Choose field name: pubblication_date
Choose field type: int, str, text, datetime, float, bool datetime
Field is nullable? (Y/n): n
Create new field? (Y/n): n
Create scheme/book/models.py... OK
Create scheme/book/forms.py... OK
Create scheme/book/routes.py... OK
Now, our book it will be inside scheme/book.
Move scheme routes inside app
Edit project/app.py and put your routes inside.
[...]
from frest.auth.routes import api as api_users
from scheme.book.routes import api as api_books
[...]
app.register_blueprint(api_books)
[...]
Database creation
Open python interpreter, import db and create.
from app import db
db.create_all()
Now exit and check your scheme inside database. It will be something like this.
CREATE TABLE user (
"userId" INTEGER NOT NULL,
email VARCHAR(30),
password VARCHAR(30),
is_admin BOOLEAN,
name VARCHAR(30),
created_at DATETIME,
PRIMARY KEY ("userId"),
CHECK (is_admin IN (0, 1))
);
CREATE TABLE book (
"bookId" INTEGER NOT NULL,
name VARCHAR(20) NOT NULL,
pubblication_date DATETIME NOT NULL,
created_at DATETIME,
updated_at DATETIME,
PRIMARY KEY ("bookId")
);
CREATE TABLE token (
"tokenId" INTEGER NOT NULL,
string VARCHAR(20),
created_at DATETIME,
expired BOOLEAN,
user_id INTEGER NOT NULL,
PRIMARY KEY ("tokenId"),
CHECK (expired IN (0, 1)),
FOREIGN KEY(user_id) REFERENCES user ("userId")
);
Start app
Inside project file you have to run python app.py and it's done.
TODO
- Migrations of database in case of edits
- Put automatically
routesinside app file - More datatype
- Relantionships (1-to-1, 1-to-n, n-to-n)
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file frest-0.1.5.post1.tar.gz.
File metadata
- Download URL: frest-0.1.5.post1.tar.gz
- Upload date:
- Size: 12.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.22.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
abeb2d5662ca8d4357d49180edab525706f05449b0c9ed49afb47ec06372ff13
|
|
| MD5 |
246cb31644f94dad9a2c50c58b86d9e0
|
|
| BLAKE2b-256 |
a111872a9cc9e2e3f064163b41043ee21ac058ff2ec5e30435d7ac4c1301eb98
|
File details
Details for the file frest-0.1.5.post1-py3-none-any.whl.
File metadata
- Download URL: frest-0.1.5.post1-py3-none-any.whl
- Upload date:
- Size: 15.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.22.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b8d551e892e71661bb672431bbea8108172b716c10236f6f831de618989b258
|
|
| MD5 |
b4e4ca1cd55ed3eb859d401bdef8b329
|
|
| BLAKE2b-256 |
33d956bb40366394afabb39c934a0da8d7e5dc34a107c97527d30fdeb0aa7c23
|