This starter kit is designed to allow you to create very fast your Flask API.
The primary goal of this project is to remain as unopinionated as possible. Its purpose is not to dictate your project structure or to demonstrate a complete sample application, but to provide a set of tools intended to make back-end development robust, easy, and, most importantly, fun.
This starter kit comes with a tutorial.Check it out if you want a quick tutorial on how to use Flask with this architecure.
You will need docker and docker-compose.
First, clone the project:
$ git clone https://github.com/antkahn/flask-api-starter-kit.git <my-project-name>
$ cd <my-project-name>
Then install dependencies and check that it works
$ make server.install # Install the pip dependencies on the docker container
$ make server.start # Run the container containing your local python server
If everything works, you should see the available routes here.
The API runs locally on docker containers. You can easily change the python version you are willing to use here, by fetching a docker image of the python version you want.
You can display availables make commands using make
.
While developing, you will probably rely mostly on make server.start
; however, there are additional scripts at your disposal:
make <script> |
Description |
---|---|
help |
Display availables make commands |
server.install |
Install the pip dependencies on the server's container. |
server.start |
Run your local server in its own docker container. |
server.daemon |
Run your local server in its own docker container as a daemon. |
server.upgrade |
Upgrade pip packages interactively. |
database.connect |
Connect to your docker database. |
database.migrate |
Generate a database migration file using alembic, based on your model files. |
database.upgrade |
Run the migrations until your database is up to date. |
database.downgrade |
Downgrade your database by one migration. |
test |
Run unit tests with pytest in its own container. |
test.coverage |
Run test coverage using pytest-cov. |
test.lint |
Run flake8 on the src and test directories. |
test.safety |
Run safety to check if your vendors have security issues. |
format.black |
Format python files using Black. |
format.isort |
Order python imports using isort. |
The database is in PostgreSql.
Locally, you can connect to your database using :
$ make database.connect
However, you will need before using this command to change the docker database container's name here.
This kit contains a built in database versioning using alembic.Once you've changed your models, which should reflect your database's state, you can generate the migration, then upgrade or downgrade your database as you want. See Commands for more information.
The migration will be generated by the container, it may possible that you can only edit it via sudo
or by running chown
on the generated file.
The application structure presented in this boilerplate is grouped primarily by file type. Please note, however, that this structure is only meant to serve as a guide, it is by no means prescriptive.
.
├── devops # Project devops configuration settings
│ └── deploy # Environment-specific configuration files for shipit
├── migrations # Database's migrations settings
│ └── versions # Database's migrations versions generated by alembic
├── src # Application source code
│ ├── models # Python classes modeling the database
│ │ ├── abc.py # Abstract base class model
│ │ └── user.py # Definition of the user model
│ ├── repositories # Python classes allowing you to interact with your models
│ │ └── user.py # Methods to easily handle user models
│ ├── resources # Python classes containing the HTTP verbs of your routes
│ │ └── user.py # Rest verbs related to the user routes
│ ├── routes # Routes definitions and links to their associated resources
│ │ ├── __init__.py # Contains every blueprint of your API
│ │ └── user.py # The blueprint related to the user
│ ├── swagger # Resources documentation
│ │ └── user # Documentation of the user resource
│ │ └── GET.yml # Documentation of the GET method on the user resource
│ ├── util # Some helpfull, non-business Python functions for your project
│ │ └── parse_params.py # Wrapper for the resources to easily handle parameters
│ ├── config.py # Project configuration settings
│ ├── manage.py # Project commands
│ └── server.py # Server configuration
└── test # Unit tests source code
To develop locally, here are your two options:
$ make server.start # Create the containers containing your python server in your terminal
$ make server.daemon # Create the containers containing your python server as a daemon
The containers will reload by themselves as your source code is changed.You can check the logs in the ./server.log
file.
To add a unit test, simply create a test_*.py
file anywhere in ./test/
, prefix your test classes with Test
and your testing methods with test_
. Unittest will run them automaticaly.You can add objects in your database that will only be used in your tests, see example.You can run your tests in their own container with the command:
$ make test
To lint your code using flake8, just run in your terminal:
$ make test.lint
It will run the flake8 commands on your project in your server container, and display any lint error you may have in your code.
The code is formatted using Black and Isort. You have the following commands to your disposal:
$ make format.black # Apply Black on every file
$ make format.isort # Apply Isort on every file
Your API needs a description of it's routes and how to interact with them.You can easily do that with the swagger package included in the starter kit.Simply add a docstring to the resources of your API like in the user
example.The API description will be available here.The Swagger UI will be available here.
Introduction This is a hackathon boilerplate for new Flask web applications created by Major League Hacking. It is for hackers looking to get started quickly on a new hackathon project using the Flask
Starter for Node.js Express API in Typescript. Requirements Node.js Yarn NPM Docker Docker Compose Getting Started Clone the repository, install the dependencies. $ git clone git@github.com:cham11ng/t
Express API Starter Kit A starter kit for building an API with Node. Requirements MongoDB Redis Node v7.6+ Node dependencies: npm install Getting started npm run start-dev Contributions Contributions
Graphile Starter Take it for a spin! We're running the starter at: https://graphile-starter.herokuapp.com Feel free to register an account and have a poke around as you see fit. NOTE: emails are sent
问题内容: 在我的Flask-RESTful API中,假设我有两个对象,用户和城市。这是一对多关系。现在,当我创建我的API并向其中添加资源时,我似乎可以做的就是将非常简单的通用URL映射到它们。这是代码(不包括无用的东西): 如你所见,我可以做所有想实现非常基本的功能的事情。我可以获取,发布,放置和删除两个对象。但是,我的目标有两个: (1)能够使用其他参数(例如城市名称)而不只是城市ID进行
在本章中,我们将学习如何创建一个基于Thymeleaf的示例项目来演示Spring CLI的功能。 按照下面提到的步骤创建一个示例项目 - Sr.No 步骤和说明 1 使用子文件夹templates和static创建名为TestApplication的文件夹。 2 在TestApplication文件夹中创建message.groovy ,在templates文件夹中创建message.groov