从零开始:学flask 服务端API
来源:互联网 发布:淘宝0秒付款 编辑:程序博客网 时间:2024/05/29 19:31
目录
- 目录
- 初识flask
- flask的安装
- 开发flask站点从hello world程序开始
- 模板渲染
- 路由详解
- 带变量的路由
- HTTP方法绑定
- Json数据
- 用Flask写个接受并处理图片的API
- 服务端
- 客户端
初识flask
*学习flask框架时,我只有少量的网络基础,所以本文会涉及很少的学术知识,用最通俗易懂的方法来介绍简单flask API是如何编成的。
flask的安装
flask安装是在virtualenv虚拟环境下进行的
所以首先利用pip进行virtualenv的编写
pip install virualenv
新建一个目录,在里面创建virualenv环境,我的是flaskdemo,在cygwin下运行:
mkdir flaskdemo
cd flaskdemo
pip install virtualenv
virtualenv –system-site-packages venv #混合虚拟环境
ps 最好让env使用系统安装好的第三方库,不然还要自己在虚拟环境中安装,这里走了不少坑。。
这样flaskdemo下会生成env文件,之后激活虚拟环境
source env\Scripts\activate
pip install Flask
之后我把所有编写的python文件都存放在Scripts中运行
开发flask站点从hello world程序开始
from flask import Flaskapp=Flask(__name__) #建立一个Flask类的实例app@app.route('/') #使用route()装饰器告诉Flask紧跟着的函数装载在哪个URL地址中def hello_flask(): return 'Hello World!' #hello_flask()函数被加载在./这个URL地址中if __name__=='__main__': app.run() #app.run()进入flask消息循环
将代码文件保存为helloworld.py,通过cygwin运行
$ python helloworld.py
* Running on http://127.0.0.1:5000/
打开网页http://127.0.0.1:5000/就可以了
模板渲染
在上述程序中实现了向客户端返回字符串这样的简单工作。在网站建设中,服务器需要使用HTML与浏览器进行交互。Flask使用Jinjia模板引擎实现了自动模板渲染功能,jinjia模块通过加载已经写好的HTML模板文件,并可在其中嵌入必要的参数。
代码块语法遵循标准markdown代码,例如:
from flask import render_template@app.route('/index/<name>') #一个函数可以通过参数变量绑定到多个url地址上<name>def hello(name): return render_template('hello.html',name=name)
本例把模板文件的文件名传递给了render_template(),flask会去网站的templates目录下加载该文件
hello.py
templates
/hello.html
hello.html模板的编写就不重复了
路由详解
带变量的路由
from flask import Flask...@app.route('/hello/<name>') def showhello(name): return 'hello %s' % name
还可以为变量指定类型
from flask import Flask...@app.route('/index/int:<num>') def count(num): return '%d' % (num+1)
HTTP方法绑定
网站通过HTTP与浏览器或其他客户端进行交互,HTTP访问一个URL时可以使用几种不同的访问方式,GET、POST、HEAD、DELETE等。
from flask import Flask...@app.route('/hello/',methods=['GET']) def get_hello(): name='gao' return name
Json数据
Json入门请看http://www.runoob.com/json/json-tutorial.html
本文只关注flask框架中怎样前端传递或者接收Json文件
利用flask的request.form.get()方法和request.get_data()方法
from flask import Flask,jsonify,requestapp=Flask(__name__)@app.route('/usejson',methods=['POST']book=dict('name':'python','price':35,'date':'2016-5')def usejson(): data=json.loads(request.form.get('data') #或者data=json.loads(request.get_data()) book['name']=data["name"] #在本地更改book字典 book['date']=data["date"] return jsonify(book) #用flask的jsonify方法,组装json格式
用Flask写个接受并处理图片的API
服务端
from flask import Flask,requestimport annotateapp=Flask(__name__)@app.route('/',methods=['POST'])def upload(): file=request.files['file'] prediction=annotate.image_annotate(file) return '%s' % predictionif __name__=='__main__': app.run()
客户端
import requests#file=open('C:/users/cutegao/Desktop/1.jpg','rb')url='http://127.0.0.1:5000/'files={ 'file':open('1.jpg','rb') }r=requests.post(url,files=files)print r.text
主要参考博客
[1] http://www.cnblogs.com/vovlie/p/4178077.html
[2] http://www.programcreek.com/python/example/51528/flask.request.files
[3] http://www.jb51.net/article/85863.htm
- 从零开始:学flask 服务端API
- 48. spring boot单元测试restfull API【从零开始学Spring Boot】(
- spring boot单元测试restfull API【从零开始学Spring Boot】
- 48. spring boot单元测试restfull API【从零开始学Spring Boot】(
- 48. spring boot单元测试restfull API【从零开始学Spring Boot】
- 从零开始学
- 从零开始搭建Flask网站之零:从零开始
- Flask-restful API演示
- flask-api接口测试
- flask-login API 详解
- 【工作笔记】从零开始学ExtJs6(四)—— 常用api小记
- --------------------《洪恩从零开始学日语》---------------------------
- 洪恩从零开始学日语
- 从零开始学Shark(转载)
- 从零开始学炒股
- 从零开始学计算机语言
- 从零开始学建网
- 高中毕业从零开始学
- Java序列化与反序列化
- 第一章:tornado入门环境搭建
- 并发队列-无界阻塞优先级队列PriorityBlockingQueue原理探究
- 64位平台C/C++开发注意事项
- java多线程之join
- 从零开始:学flask 服务端API
- HTML DOM setInterval() 方法
- 数据库连接池配置详解
- python开头的coding设置
- Spring(02)——bean实例化
- iOS Weex与Native交互
- python基础
- 2706:麦森数 百炼oj
- Source Insight 4.0默认显示字体设置