使用flask写移动端API
环境 python 3.7
使用pip 安装falsk
pip3 install flask
#!flask/bin/python
from flask import Flask, jsonify, render_template, Request, Response
from flask import flask_bootstrap
from flask import g
import sqlite3
import time
import datetime import dbInit app = Flask(__name__) def connect_db():
conn = sqlite3.connect("testDB.db3",check_same_thread = False)
return conn conn = connect_db()
cursor = conn.cursor() #通过在before_request/teardown_request hook方法可以在每次请求连接开始之前和结束时候连接和断开数据库
@app.before_request
def before_request():
g.db = connect_db() @app.teardown_request
def teardown_request(exception):
if hasattr(g, 'db'):
g.db.close() #但是该方法的缺陷在于没有请求就没法连接数据库,所以如果要在脚本或者python的交互式终端中访问数据库需要这样做
with app.test_request_context():
app.preprocess_request()
#now you can use the g.db object
# dbInit.init_db() #缺点,不能离开请求上下文依赖,解决方法
def get_connection():
db = getattr(g, '_db', None)
if db is None:
db = g._db = connect_db()
return db
#缺点必须使用 db = get_connection() 而不是仅仅直接使用g.db 来访问数据库连接 def initSqliteBD():
connect_db()
createUserTable() def createUserTable():
cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
conn.commit() def deleteTable(tableName):
cursor.execute('delete table')
conn.commit() def insertAnUser(id, name):
cursor.execute('insert into user values(?,?)',(id,name))
conn.commit() def queryAllUser():
cursor.execute('select id, name from user')
conn.commit()
return cursor.fetchone() #===========page route==========
@app.route('/')
def index():
return "Hello, World!" @app.route('/index/<name>')
def home(name=None):
return render_template('index.html',name = name) @app.route('/register')
def regiser():
return render_template('register.html') #===========api route==========
@app.route('/todo/api/v1.0/user/register', methods=['GET'])
def createAnUser():
insertAnUser(1,'Jarvis')
return jsonify('ok') @app.route('/todo/api/v1.0/users',methods=['GET'])
def get_users():
# return jsonify({"users":users})
return jsonify(queryAllUser()) @app.route('/todo/api/v1.0/users/<string:userName>',methods=['GET'])
def get_user(userName):
users = [{"userName":"Jarvis","age":""},{"userName":"Mike","age":""}]
user = filter(lambda t: t[userName] == userName, users)
if len(user) == 0:
abort(404)
return jsonify({"task":task[0]}) if __name__ == '__main__':
app.run(debug=True)
initSqliteBD()
使用flask写移动端API的更多相关文章
- Python Flask 实现移动端应用接口(API)
引言 目前,Web 应用已形成一种趋势:业务逻辑被越来越多地移到客户端,逐渐完善为一种称为富互联网应用(RIA,rich Internet application)的架构.在 RIA 中,服务器的主要 ...
- 使用python的Flask实现一个RESTful API服务器端
使用python的Flask实现一个RESTful API服务器端 最近这些年,REST已经成为web services和APIs的标准架构,很多APP的架构基本上是使用RESTful的形式了. 本文 ...
- Identity4实现服务端+api资源控制+客户端请求
准备写一些关于Identity4相关的东西,最近也比较对这方面感兴趣.所有做个开篇笔记记录一下,以便督促自己下一个技术方案方向 已经写好的入门级别Identity4的服务+api资源访问控制和简单的客 ...
- JAVA通过http访问其他服务端API
项目要实现这么一个功能,用户通过点击按钮,通过axios来访问python的API(算法,java不好做)得到一个结果存储到数据库并且返回到页面. 但是python不是在tomcat上面运行的,所以不 ...
- CMDB学习之五服务端api
服务端api 对发送来的数据进行处理,并返回结果,首先要创建一个Django项目 第一步,就是写URL路由在分支中写url api 主路由 from django.conf.urls import u ...
- 移动端API架构 统一Proxy还是各自为政?
今天首先回答上一篇的问题: 为什么APP通过运营商接入网络,连通率会那么差? 1. 域名缓存问题 运营商的localdns会缓存域名的解析结果,不向权威DNS递归查询解析 为什么要这么干呢? 1)运营 ...
- .Net分布式异常报警系统-客户端及服务端API
客户端 客户端的作用就是捕获未处理异常, 发送异常到服务端. 关于捕获未处理异常的方法参考 http://www.cnblogs.com/youring2/archive/2012/04/25/246 ...
- 安卓推送——个推服务端api使用误区
首先你需要在个推开放着平台上注册你的应用,以及获得以下几个必要的值APPID |APPKEY | MASTERSECRET,本文假设你已经完成上述步骤以及完成客户端SDK的集成. 原理 个推服务端ap ...
- 服务端API 工作经验(没有工作的是体会不到的)
1.慢慢了解以下内容 [{xx:xxx,xx:xxx},{xx:xxx,xx:xxx},{xx:xxx,xx:xxx},]-- 数据 data 服务端API 状态代码(01代表成功) message ...
随机推荐
- 12C -- ORA-12850: 无法在所有指定实例上分配从属进程: 需要 2, 已分配 1
使用客户端连接到oracle 12.2.0.1 rac数据库,报以下错误信息: ORA-12850: 无法在所有指定实例上分配从属进程: 需要 2, 已分配 1 因为没有mos账号,只好谷歌一下了.找 ...
- PCA主成份分析学习记要
前言 主成份分析,简写为PCA(Principle Component Analysis).用于提取矩阵中的最主要成分,剔除冗余数据,同时降低数据纬度.现实世界中的数据可能是多种因数叠加的结果,如果这 ...
- android 加载远程Jar、APK
参考链接: .http://blog.csdn.net/bboyfeiyu/article/details/117104972\ http://www.cnblogs.com/LittleRedPoi ...
- Socket网络编程--聊天程序(6)
这一小节将增加一个用户的结构体,用于保存用户的用户名和密码,然后发给服务器,然后在服务器进行判断验证.这里就有一个问题,以前讲的就是发送字符串是使用char类型进行传输,然后在服务器进行用同样是字符串 ...
- JsonCpp 的使用
JSON全称为JavaScript ObjectNotation,它是一种轻量级的数据交换格式,易于阅读.编写.解析.jsoncpp是c++解析JSON串常用的解析库之一. jsoncpp中主要的类: ...
- python修饰器(装饰器)以及wraps
Python装饰器(decorator)是在程序开发中经常使用到的功能,合理使用装饰器,能让我们的程序如虎添翼. 装饰器的引入 初期及问题的诞生 假如现在在一个公司,有A B C三个业务部门,还有S一 ...
- NodeJS + PhantomJS 抓取页面信息以及截图
利用PhantomJS做网页截图经济适用,但其API较少,做其他功能就比较吃力了.例如,其自带的Web Server Mongoose最高只能同时支持10个请求,指望他能独立成为一个服务是不怎么实际的 ...
- 挖坑:handoop2.6 开启kerberos(全流程学习记录)
目录: 1.涉及插件简介 2.安装步骤 3.日志错误查看 1.kerberos是什么东西 度娘指导: Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为 客户机 / 服务器 应用程序提供 ...
- 关于指针*前后const代表的意思——记住一个口诀“左内右本”
记住一个口诀“左内右本”:const出现在*的左边,则说明指针所指向的内容是常量const出现在*的右边,则说明指针本身是常量如果*左右两边都出现const,那么说明指针本事是常量,它所指向的内容也是 ...
- centos7 防火墙
1.firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status f ...