环境 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的更多相关文章

  1. Python Flask 实现移动端应用接口(API)

    引言 目前,Web 应用已形成一种趋势:业务逻辑被越来越多地移到客户端,逐渐完善为一种称为富互联网应用(RIA,rich Internet application)的架构.在 RIA 中,服务器的主要 ...

  2. 使用python的Flask实现一个RESTful API服务器端

    使用python的Flask实现一个RESTful API服务器端 最近这些年,REST已经成为web services和APIs的标准架构,很多APP的架构基本上是使用RESTful的形式了. 本文 ...

  3. Identity4实现服务端+api资源控制+客户端请求

    准备写一些关于Identity4相关的东西,最近也比较对这方面感兴趣.所有做个开篇笔记记录一下,以便督促自己下一个技术方案方向 已经写好的入门级别Identity4的服务+api资源访问控制和简单的客 ...

  4. JAVA通过http访问其他服务端API

    项目要实现这么一个功能,用户通过点击按钮,通过axios来访问python的API(算法,java不好做)得到一个结果存储到数据库并且返回到页面. 但是python不是在tomcat上面运行的,所以不 ...

  5. CMDB学习之五服务端api

    服务端api 对发送来的数据进行处理,并返回结果,首先要创建一个Django项目 第一步,就是写URL路由在分支中写url api 主路由 from django.conf.urls import u ...

  6. 移动端API架构 统一Proxy还是各自为政?

    今天首先回答上一篇的问题: 为什么APP通过运营商接入网络,连通率会那么差? 1. 域名缓存问题 运营商的localdns会缓存域名的解析结果,不向权威DNS递归查询解析 为什么要这么干呢? 1)运营 ...

  7. .Net分布式异常报警系统-客户端及服务端API

    客户端 客户端的作用就是捕获未处理异常, 发送异常到服务端. 关于捕获未处理异常的方法参考 http://www.cnblogs.com/youring2/archive/2012/04/25/246 ...

  8. 安卓推送——个推服务端api使用误区

    首先你需要在个推开放着平台上注册你的应用,以及获得以下几个必要的值APPID |APPKEY | MASTERSECRET,本文假设你已经完成上述步骤以及完成客户端SDK的集成. 原理 个推服务端ap ...

  9. 服务端API 工作经验(没有工作的是体会不到的)

    1.慢慢了解以下内容 [{xx:xxx,xx:xxx},{xx:xxx,xx:xxx},{xx:xxx,xx:xxx},]-- 数据 data 服务端API 状态代码(01代表成功) message ...

随机推荐

  1. 2D空间中求两圆的交点

    出处:https://stackoverflow.com/questions/19916880/sphere-sphere-intersection-c-3d-coordinates-of-colli ...

  2. [svc]runinit管理多进程

    runinit启动小程序测试 与Supervisord类似的工具包括monit, daemontools和runit. 我还发现个神器,专门针对单容器启动多进程的神器s6: https://githu ...

  3. Socket网络编程--小小网盘程序(2)

    这一节将不会介绍太多的技术的问题,这节主要是搭建一个小小的框架,为了方便接下来的继续编写扩展程序.本次会在上一小节的基础上加上一个身份验证的功能. 因为网盘程序不像聊天程序,网盘是属于主动向服务器拉取 ...

  4. tensorflow 笔记11:tf.nn.dropout() 的使用

    tf.nn.dropout:函数官网说明: tf.nn.dropout( x, keep_prob, noise_shape=None, seed=None, name=None ) Defined ...

  5. matplotlib 学习总结

    matplotlib 学习总结 作者:csj更新时间:01.09 email:59888745@qq.com 说明:因内容较多,会不断更新 xxx学习总结: 回主目录:2017 年学习记录和总结 # ...

  6. Android 实时录音和回放,边录音边播放 (KTV回音效果)

    上一篇介绍了如何使用Mediarecorder来录音,以及播放录音.不过并没有达到我的目的,一边录音一边播放.今天就讲解一下如何一边录音一边播放.使用AndioRecord录音和使用AudioTrac ...

  7. 【转帖】流程与IT管理部——IT支撑业务变革的必然趋势

    流程与IT管理部——IT支撑业务变革的必然趋势 1前言 伴随着中国企业的信息化进程, IT部门.IT专职人员已经在大部分企业获得了一席之地,电脑.网络.软件的维护都离不开这个部门:不过“一席之地”并不 ...

  8. ajax实战用法详解

    谦虚使人进步,总结使人提高! 以下5个方法执行一般Ajax请求的简短形式,在处理复杂的Ajax请求时应该使用jQuery.ajax() 1.load(url,[data],[callback])载入远 ...

  9. Ubuntu上查内存情况

    free -h

  10. python mysql redis mongodb selneium requests二次封装为什么大都是使用类的原因,一点见解

    1.python mysql  redis mongodb selneium requests举得这5个库里面的主要被用户使用的东西全都是面向对象的,包括requests.get函数是里面每次都是实例 ...