python |
您所在的位置:网站首页 › flask编写api › python |
前言
上一篇中,我大概给你解释了下它的自带例子的大概结构同时还把它跑起来,大概看了下它的运行效果,今天我们就来更进一步。 如果你之前学过一些关于网络请求的知识的话,可以跳过下面一个步骤,如果没有的话,你可以根据我下面的简介,再配合自己的知识(或者自己百度),大概了解下,前后端分离大概是怎么个分法。 网络请求基本简介只大概介绍,只要是为了方便后面flask写接口用。有些比喻可能不大准确,但是就现在写接口来说,这样理解也差不多。 为什么要前后端分离为什么要前后端分离嘞?一个项目直接部署在一起不好嘛,干嘛分开?,,我当时第一时间听说到这个概念之后,也是这样的想法。可是后来我慢慢发现它的好处。。。。。 不知道你有没有留意到,大部分的厂商在各种平台都有对应的app。。即使有些平台的差距特别大,但是他们的app中的数据在不同平台上都是通用的(个别除外。。)。比如,qq有安卓版,有苹果版,有windows版本,有mac版本,但是不管你从哪个平台上登录,你的qq中的数据都没有改变。甚至你不同平台登录,它都会相互提示。 这些平台之间有些差距十分巨大,甚至从构架上都是不同的。那么,如果你的公司想到各个平台上都有你的应用,你是不是都要把他们的代码都写一遍,而且你还要留意不同平台之间公用一个数据库的兼容性? 其实duck不必。你的这些app中,调用数据的这部分代码大多都是重复的。那么你为什么不直接写只一个标准的,所有客户端都可以直接调用的公共接口嘞? 那么,这个公共的接口,就可以称为后台。(其实前后端分离的好处不止这么点,但是这里仅仅只是引入) 前后端分离的好处不提远的,就说一个最现实的。只要你写好了一个后台接口。你开发网页版本的可以直接用它,开发小程序可以直接用它,甚至连硬件也可以直接用它。根本不需要任何改写。 如微信小程序只要一个 wx.request( url:"http://xxx.xxx.xx/xxx", data:{ "xx":xx }, sucess:function(res){} );就可以直接拿到你后台处理好了的数据了。 如果你是python编程的话,直接: s = requests.session() res = s.get(url, params=data, headers=header_code)如果你想用Ardunio的单片机来发送请求的话: HTTPClient http; http.begin(GetUrl); httpCode = http.POST(payload);当然,如果你想用网页端请求也是一步到位: const { data: res } = await this.$http.post('xxx', payload)反正,,,总的来说,目前对于我们自己,前后端分离了,你就只用写一个后台,然后各种平台的开发你都可以直接用这个接口,而不用每个都重新写了。 怎么测试自己的接口我们大多时候,自己的接口写好了之后,总会出现一些不尽人意的问题。所以我们可以自己调用下试试,来看看自己的接口有没有什么bug。 常用的API测试助手嘛,有啥子POST Man之类的,,,但是,emmmm,我因为电脑上安的东西有点多(从前端到后台,从硬件到软件,,,还有pytorch的包,,,c盘我是真心担心它撑不住),反正就是懒得安。你要是感兴趣可以自己安一个。。。我这里直接用内网穿透,然后用别人的网页版的调试助手了。。 。 接口传参上面和大家说过了,既然是要和服务器进行通信,那么参数的传递时必然的。否则就像别人和你说话的时候一样。明明已经找到你了,却啊吧啊吧的瞎比划,,你根本不知道它让你怎么做。 所以接下来我们来简单的传个参数。 功能很简单,就是你给这个接口发啥,它就收啥。 我们一步一步的来。首先,先从控制台把受到的数据打印出来。 接收数据并处理 from flask import Flask,request # 下面要从request里面获取数据,所以要导入 app = Flask(__name__) @app.route('/') def hello_world(): data = request.get_data() # 直接调用函数,并打印 print(data) return 'Hello World!' # 这里就不改了,待会的效果直接去控制台看 if __name__ == '__main__': app.run(debug=True, port=80)运行起来 我们设置发送的格式为JSON,然后我们接收的时候把数据转化成JSON就可以啦。 from flask import Flask,request import json # 由于我们用到了Json,所以要导入 app = Flask(__name__) @app.route('/',methods=['POST']) def hello_world(): data = request.get_data() j_data = json.loads(data) # 把数据转化成json数据 print(j_data) return 'Hello World!' if __name__ == '__main__': app.run(debug=True, port=80)然后运行叭, 其实返回数据的话,之前的return已经可以了,,,但是实际需求中,仅仅返回字符串的话,肯定不够用的,比如我要获得天气数据,你要一下子就返回天气,气温,湿度等信息。如果一个字符串直接返回,那样的话,我收到后还要处理提取,太麻烦了。。所以直接也返回JSON格式的数据就可以了。 from flask import Flask,request,jsonify # 用来把返回数据转化成JSON的 import json app = Flask(__name__) @app.route('/',methods=['POST']) def hello_world(): data = request.get_data() j_data = json.loads(data) print(j_data) res_data = j_data['my_test'] msg = { "you_data":res_data } return jsonify(msg) if __name__ == '__main__': app.run(debug=True, port=80)这是API助手的: 可以看到,,API助手的返回数据已经成JSON格式了。 总结这一章大概的讲了下flask怎么接收参数和返回。当然,这只是其中的一种,还有各种各样的方法。目前为止,学到的内容已经大概满足初步的使用了。(可以写些只用传普通字符啊,啥子的接口了。比如,emmm,,,xxx倒计时啥子的,我以前无聊的时候根据八字的算法写了个算八字的接口。。后来代码搞不见了,害。)当然,你要是会一些其它的库,还有更多的骚操作。如,emmm,爬取别的网址的信息,搞自己接口上?,,反正骚操作不少。。。可以自己多摸索下。 下回我给你介绍关于图片处理。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |