Giter Site home page Giter Site logo

pyapi's Introduction

pyapi

pyapi是一个基于Flask框架的api项目脚手架,是从实际应用中精简而来,用于快速构建api项目,或者用于Flask框架初学者上手。

简要说明

使用蓝图结构

src/api是蓝图包目录,如果有多个模块,可以创建多个。
src/api/__init__是关于蓝图的特殊配置,如果多个蓝图有共同逻辑,也可以提取到src下的__init__中以app形式注册挂载。

统一认证身份

src/auth.py有用来生成和清除token的方法,以及验证token的装饰器函数。

统一处理返回值

src/response.py有用来做接口返回数据json化处理的函数,以及全局定义的参数及返回值列表。

功能插件

src/logger.py是提供程序日志功能的插件,其实主要用来配置日志参数。
src/cache.py是缓存插件,有基于内存的MemCache简单缓存和基于Redis的RedisCache缓存。
src/doc.py是生成接口文档的插件,根据注册在Flask中视图函数的注释自动生成接口文档,并注册为/doc/页面,可以按需要指定生成接口文档的蓝图。

配置文件

src/config.py用来配置应用的参数。

服务或工具函数

src/service.py中是一些调用外部服务的函数。
src/tool.py中是一些常用的工具函数。

启动管理

run.sh脚本使用uWSGI进行生产环境下的启动管理,注意如果有多环境,请使用正确的uWSGI程序。
app.py用来指定工厂函数的创建,可以在命令行执行flask run命令启动,同时也配合run.sh以uWSGI模式运行项目,两者都可以通过环境变量控制启动模式。

运行使用

外部组件依赖

需要安装MySQL作为数据存储。
可选安装Redis作为数据缓存,src/__init__示例文件中导入的是Redis缓存。也可以使用简单的内存缓存。

安装依赖包

主要依赖都在requirement.txt中。
值得说明的是由于示例接口中有使用阿里的oss存储头像文件,所以里面有个阿里oss的依赖包。但这不是必须的,也可以用其他存储方式。

创建基本库表

app.py中有基本的数据库管理命令,可以在命令行执行flask init_db初始化库表结构。

运行程序

在开发环境中(以pychram举例),配置【Run/Debug configurations】,选择正确的解释器,在module模式内输入【flask】,脚本参数输入【run】,如需要prod环境可在环境变量里加入【APP_ENV=prod】。
在生产环境中(以CentOS/Ubuntu举例),配置run.sh中uWSGI程序的正确路径,配置uWSGI的启动端口,然后运行脚本即可。脚本内默认使用prod环境启动,如需要dev环境可在run.sh脚本中修改app_env配置。
需要注意的是示例脚本中uWSGI是以socket形式启动的,需要配置Web服务器作为代理(如Nginx)。或者将run.sh的start函数中用于uWSGI启动的【-s ${host}:${port}】命令项改为【--http-socket ${host}:${port}】这样就能直接访问了。

开始使用

可以先使用示例接口里的注册接口进行账号注册,然后将接口返回的token字段放到请求头中,然后再请求其他几个接口。
如果是以测试模式启动的话,可以访问{{host}}/doc/页面查看示例接口的文档。

相关文档

买杯咖啡支持一下

买杯咖啡支持一下

pyapi's People

Contributors

xuke1668 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

pyapi's Issues

接口文档完整样例

你好,我要要一份接口文档的完整要样例,主要是对返回数据不知道怎么写文档。感谢。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.