开源服务框架

核心提示开发功能不是特别复杂的web服务,可以考虑使用bottle框架。原因:一、Python开发效率高呀!不信你比比同样的功能Python几行可以搞定?换java试试?换C++试试?作为这几种语言都使用过的我来说,用过java就尽量不用C++,用

web服务的开发功能不是特别复杂,可以考虑使用bottle框架。理由:第一,Python开发效率高!你不相信Python几行就能处理同样的功能?试试java?试试C++?由于这些语言我都用过,用过java的尽量不要用C++,用过Python的尽量不要用java,实在受不了。

先用瓶子框架安装。一个订单,完成。

# pip安装瓶

分享一个pip的问题,我的Python版本很低2.6.6。原来通过安装yum的epel,已经成功安装了一个简单易用的pip。但是我每次用pip命令,底部都会提示升级。

您使用的是pip版本9.0.3,但是版本20.0.2是可用的。

您应该考虑通过“pip安装-升级pip”命令进行升级

我看这个提示没有任何恶意,所以执行了pip安装-升级pip。那么pip指令就不能用了,和升级glibc错误后shell指令ls cd不能执行是一样的效果。而且升级后,想安装回pip的较低版本时,也没有相应的安装包。Yum只能找到20.0.2版本。

Get-pip.py下载后无法成功安装。最后在该地址下载了2.6版本的安装文件,然后成功安装了可用的pip。

安装瓶子成功后,输入Python命令行导入瓶子。不报错,就是成功。我的web服务是一个包含以下代码的文件bottleweb.py

#编码=utf-8

从瓶子进口

导入json

导入MySQLdb #这个例子需要操作数据库,否则就没必要写这行了。估计这个数据库包pip的安装不会成功。我成功地安装了MySQL-python。

导入系统

再装

sys.setdefaultencoding

进口瓶

App = bottle.default_app#需要定义静态资源。如果没有静态资源,可以省略这一行。

#设置vue脚手架时,需要以下两个@hook内容;否则,将报告跨域访问资源的错误。

@hook

定义验证:

请求方法= request.environ.get

HTTP _ ACCESS _ ConTROL _ REQUEST _ METHOD = REQUEST . environ . get

if REQUEST_METHOD == 'OPTIONS '和HTTP _ ACCESS _ ConTROL _ REQUEST _ METHOD:

request.environ['请求方法']= HTTP _ ACCESS _ ConTROL _ REQUEST _ METHOD

@hook

定义启用_cors:

response . headers[' Access-Control-Allow-Origin ']= ' * '

response . headers[' Access-Control-Allow-Methods ']= ' GET,POST,PUT,DELETE,OPTIONS '

response . Headers[' Access-Control-Allow-Headers ']= ' * '

@ route # web服务下静态资源的地址,不含前端静态资源。这些路由和app.route可以省略。

定义状态:

返回静态文件

@app.route

Def js: #我这样写这些目录是因为vue打包后,目录结构在dist中是静态的等等。

返回静态文件

@app.route

定义css:

返回静态文件

@get#返回某个表中的日期,看sql就明白了

def helloins:

db = MySQLdb.connect

游标= db.cursor

sql = "从测试表中选择不同的日期"

打印sql

光标.执行

data = cursor.fetchall

jsondata={}

结果=[]

对于数据中的行:

结果= {}

结果['日期'] =行[0]

结果.追加

jsondata['code']=0

JSON data[' datas ']=结果

Return jsondata #返回json格式。为了方便前端vue接收处理,其实可以返回各种类型。

@get

def helloworld:

返回“你好,世界!”

if __name__ == '__main__ ':

奔跑

在bottleweb.py所在的目录下执行#python bottleweb.py,web服务启动。简单吗?去http://127 . 0 . 0 . 1:2020/test 2020/hello world试试吧。

如果安装MySQL数据库,可以测试test2020/date的url是否能返回结果。

数据库只能有以下数据

首页是这样的。选择某个日期供用户在手机上使用。

前端用vue+vux开发,开发后打包的产品就是上面说的dist目录里的东西。本文就不详细讨论了。后续会说一些MySQL和vue开发的坑。如果你觉得上面的代码有点复杂,可以把route,app.route,/test2020/date语句块,@hook,MySQL,前端的东西都删掉,这就是最简单的瓶子web服务。这有助于循序渐进地学习。

 
友情链接
鄂ICP备19019357号-22