All Projects → nexonlab → flask-skeleton-api

nexonlab / flask-skeleton-api

Licence: Apache-2.0 license
A boilerplate Python API made with Flask used by Ceuma Group developers team.

Programming Languages

HTML
75241 projects
python
139335 projects - #7 most used programming language
API Blueprint
66 projects
Makefile
30231 projects
shell
77523 projects

Projects that are alternatives of or similar to flask-skeleton-api

programmingbuddies-api
API backend for Programming Buddies (projects management)
Stars: ✭ 14 (-22.22%)
Mutual labels:  flask-api
ASD-ML-API
This project has 3 goals: To find out the best machine learning pipeline for predicting ASD cases using genetic algorithms, via the TPOT library. (Classification Problem) Compare the accuracy of the accuracy of the determined pipeline, with a standard Naive-Bayes classifier. Saving the classifier as an external file, and use this file in a Flask…
Stars: ✭ 14 (-22.22%)
Mutual labels:  flask-api
logtoes
Demo of Asynchronous pattern (worker) using Python Flask & Celery
Stars: ✭ 49 (+172.22%)
Mutual labels:  flask-api
TF2DeepFloorplan
TF2 Deep FloorPlan Recognition using a Multi-task Network with Room-boundary-Guided Attention. Enable tensorboard, quantization, flask, tflite, docker, github actions and google colab.
Stars: ✭ 98 (+444.44%)
Mutual labels:  flask-api
flask-rest-api
This program shows how to set up a flaskrestapi with postgre db, blueprint, sqlalchemy, marshmallow, wsgi, unittests
Stars: ✭ 28 (+55.56%)
Mutual labels:  flask-api
flask-arrested
Flask-Arrested: A Framework For Rapidly Building REST APIs with Flask.
Stars: ✭ 40 (+122.22%)
Mutual labels:  flask-api
username-availability-checker
Live at : https://username-check.herokuapp.com/
Stars: ✭ 84 (+366.67%)
Mutual labels:  flask-api
Flask-Deep-Learning-NLP-API
Flask API to productize a document classification model. Classification model was built using Keras with tensorflow backend
Stars: ✭ 26 (+44.44%)
Mutual labels:  flask-api
oms.py
🔨 A micro-framework for the OMS, and code written in Python 3.6+.
Stars: ✭ 106 (+488.89%)
Mutual labels:  flask-api
scraped-tvtime-api
A free TVTime API based on scraping TVTime website. No API key required
Stars: ✭ 23 (+27.78%)
Mutual labels:  flask-api
Water-classifier-fastai
Deploy your Flask web app classifier on Heroku which is written using fastai library.
Stars: ✭ 37 (+105.56%)
Mutual labels:  flask-api
avatar-gen
pillow 生成头像,中英文首字母或者随机像素化。Using pillow for generate avatars, first letter of string in Chinese and English or random pixel like avatars.
Stars: ✭ 31 (+72.22%)
Mutual labels:  flask-api
CricketAPI
A Flask API Server with options to get live scores, live commentary and scorecards.
Stars: ✭ 21 (+16.67%)
Mutual labels:  flask-api
Nectus
A boilerplate Flask API for a Fullstack Project with some additional packages and configuration prebuilt. ⚙
Stars: ✭ 32 (+77.78%)
Mutual labels:  flask-api

Flask Skeleton API

Um simples esqueleto de API construido com Flask.

About

Este é um esqueleto de API construido com Flask e utilizado pelo Núcleo de Tecnologia e Inovação do Grupo Ceuma (NTI) para a construção de aplicações backend.

Gerar esqueleto utilizando cookiecutter

O cookiecutter é um utilitário em linha de comando utilizando para gerar templates de projetos criados utilizando a ferramenta. Para gerar o projeto a partir deste template, você deverá ter o pacote cookiecutter instalado no seu python.

  1. Instale o cookiecutter com o comando pip install cookiecutter (aconselhamos o uso de um ambiente virtual python).
  2. Execute o comando cookiecutter https://github.com/devsceuma/flask-skeleton-api para prosseguir com a geração do template no diretório atual da execução.
  3. Uma vez baixado o projeto, o cookiecutter será responsável por gerar o template e para isso irá pedir algumas informações, entre elas "project_name" que é o nome da pasta do projeto e "app_name" que será o nome da aplicação e prefixo utilizado pela API em suas rotas.

Documentação da API

Para acessar a documentação da API, acesse a seguinte rota:

http://localhost:5000/app-name/apidocs/

A API possui um arquivo de documentação default utilizando a especificação do Blueprint. O arquivo está em: ./app/docs/api-blueprint-sample.apib.

Preferimos deixar a responsabilidade da renderização do template HTML para o desenvolvedor. Toda vez que houver atualizações na especificação de endpoints da sua API, será de responsabilidade do desenvolvedor realizar a atualização e renderização do documento estático. Para isso, basta utilizar as ferramentas existentes e sugeridas pelo Blueprint.

Afim de facilitar o processo de gerar o HTML, descrevemos ele a seguir.

1. Instale o Render

Uma das ferramentas sugeridas pelo Blueprint é o Aglio. Usaremos ele:

npm install -g aglio

2. Gere a documentação.

Para isso, entre na raíz do projeto e execute o seguinte comando:

aglio -i ./app/docs/api-blueprint-sample.apib --theme-full-width --no-theme-condense -o ./app/templates/apidocs/index.html

O Output será um arquivo index.html dentro de ./app/templates/apidocs/index.html.

p.s: O arquivo base para esta documentação foi retirado de: Definindo APIs com o API Blueprint.

Como usar isto

Usando Flask

Antes de iniciar a sua aplicação, você deve informar ao seu terminal qual a aplicação flask que será iniciada. Para isto, você deverar setar uma variável de ambiente de nome FLASK_APP e, no nosso caso, valor igual a app. Neste caso, o valor app refere-se ao módulo python onde está contida a aplicação.

No Linux:

export FLASK_APP=app

No Windows:

set FLASK_APP=app

Para ativar o modo de debug uma outra variável de ambiente deverá ser setada, desta vez com nome FLASK_ENV e valor development. Esta informação informa ao flask que ele deverá iniciar a aplicação em modo de desenvolvimento, com o stacktrace de erros e outras funcionalidades.

No Linux:

export FLASK_ENV=development

No Windows:

set FLASK_ENV=development

Usando localmente com Cookiecutter

O cookiecutter permite que o usuário crie projetos a partir de templates, como este Skeleton por exemplo.

  1. Para isso você precisa instalar o cookiecutter conforme a documentação sugere. De preferência crie um virtual-env para isto.

pip install cookiecutter

  1. Depois gere o novo projeto a partir deste repositório.

cookiecutter gh:devsceuma/flask-skeleton-api

Para ver mais formas de uso, visite a sessao de usage do cookiecutter.

Virtualenv

É aconselhável que você esteja utilizando uma virtualenv para a execução do projeto. No virtualenvwrapper você encontra a documentação de um utilitário para utilização de ambientes virtuais com o python. Porém, se você não deseja instalar o utilitário, pode utilizar apenas o virtualenv a fim de isolar a instalação dos pacotes do python contido em sua máquina.

Usando Docker

Para subir a aplicação usando docker, basta executar o seguinte comando na raíz do projeto:

docker-compose up -d --build

O arquivo docker-compose.yml usa o ceumanti/docker-python-odbc, uma imagem preparada para com configuração de conexão com SQLServer usando a versão 3.6.5 do Python. A imagem é extensível e qualquer pessoa pode criar outras imagens a partir dela. Recomendamos que sejam criadas imagens a partir desta, por conta do processo de construção usando Pyenv, que é custosa.

No processo de contrução e build da imagem o script run.sh será executado. Este script, que se encontra na raíz do projeto, é responsável por efetuar o download e instalação dos pacotes python, além da execução do servidor waitress-serve para rodar a aplicação. A aplicação dockerizada está pronta para produção (vide utilização de servidor preparado para tal propósito) e o modo de desenvolvimento está desativado.

Integração com SQL Server

Esta é uma seção especial destinada a esclarecer alguns processos necessários à utilização da aplicação em conjunto com o SQL Server.

Driver ODBC

Linux:

Para baixar o driver, você deverá a página ODBC Driver for SQL Server - Linux e seguir o tutorial.

Windows:

Para baixar o driver, você deverá a página ODBC Driver for SQL Server - Windows e seguir o tutorial.

Pacote pyodbc

Para prosseguir com a instalação, certifique-se de que todo o processo anterior foi corretamente efetuado. Após isso, o comando

pip install pyodbc

deverá instalar o pacote pyodbc que será utilizado em conjunto com o driver para acesso à base.

Maintainers and Contributors

Este projeto é mantido por @devsceuma.

Maintainers

Atmos Maciel
Igor Cavalcanti

Como contribuir

Qualquer pessoa pode contribuir com este projeto, basta fazer um fork do repositório e submeter Pull Requests :)

License

Este projeto está sob uma Licença Apache License 2.0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].