分享
交互与部署
输入“/”快速插入内容
💡
交互与部署
用户3841
用户3841
用户7367
用户7367
2024年10月6日修改
背景🌟
在我们组队参加比赛时,一项免不了的工作就是完成与前后端同学的交接🤝。
对于本题,我们设想以下最简单的一种情况:后端同学向我们发送请求(包含传输的文件以及相应的文件参数等信息),我们需要顺利接受后端同学发送的文件,并根据相应的参数等信息选择我们的代码工作模式,最终成功将网络输出结果再发送回后端同学🚀。
一个Web应用的本质就是:
浏览器发送一个HTTP请求🌐;
服务器收到请求,生成一个HTML文档📄;
服务器把HTML文档作为HTTP响应的Body发送给浏览器📡;
浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示🖥️。
所以,最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收用户请求,从文件中读取HTML,返回🔄。Apache、Nginx、Lighttpd等这些常见的静态服务器就是干这件事情的。
如果要动态生成HTML,就需要把上述步骤自己来实现。不过,接受HTTP请求、解析HTTP请求、发送HTTP响应都是苦力活,如果我们自己来写这些底层代码,还没开始写动态HTML呢,就得花个把月去读HTTP规范📚。
正确的做法是底层代码由专门的服务器软件实现,我们用Python专注于生成HTML文档。因为我们不希望接触到TCP连接、HTTP原始请求和响应格式,所以,需要一个统一的接口,让我们专心用Python编写Web业务👨💻。
这个接口就是WSGI:Web Server Gateway Interface🌉。
以上内容转载自廖雪峰的博客
任务要求📝
•
了解Flask框架(不需要完全掌握,只需能构建出最简单的一种WSGI应用🔧)
•
了解并简单学习json数据格式📊
•
在本地服务器的8080端口处开启一个receive_file路由🛤️
•
控制我们的receive_file路由能够接受后端同学向我们发送的POST请求📡
•
了解并区分表单数据(form data)与头部(headers)数据的差异、二者应用场景的差异、二者的特征差异···🔍
•
学习如何使用Flask在服务器端读取表单数据与头部数据🔑
•
下载并学习Apifox软件的基本用法,学会使用Apifox发送模拟请求的操作,并学会如何使用Apifox发送不同的表单数据信息🚀
•
我们规定,在后端同学发送的POST请求中,主要数据均储存在表单数据中📦。
以下是我们对处理POST请求的基础要求📋
基础要求:
•
POST请求的表单数据中包含一个名为
Operation
的键,其值可以为:
sum
(相加)、
multiply
(相乘)、
subtract
(相减) 、
divide
(相除)
•
POST请求的表单数据中还分别包含一个名为
Data_A
与名为
Data_B
的两个键,两个键的值
A
与
B
分别代表操作数的值,这两个值可以在Apifox中由用户自己定义,跟随
Operation
键一同包含在POST请求中发送至服务器
•
服务器接受请求后,读取三个键的值,并执行相应操作 (假如
Operation
的值为
sum
,则调用本地的另一个py程序计算
A
+
B
的值
result
,然后以json格式
{"Result" : result}
将得出的结果返回给Apifox)
进阶要求🏋️♂️
Ⅰ
在进阶要求中,我们需要调用一个我们训练好的神经网络,下文中提到的file类型根据各位选取的神经网络类型而自行决定🧠
•
POST请求的表单数据中包含一个文件file(以图片为例),并且还有代表对图像进行操作的键值对(可选)🖼️
•
读取传入的file,调用神经网络模型,将file输入模型中,完成预测,最终将结果以json的格式回传给Apifox🔮
Ⅱ(慎选)
对于学有余力的同学,在完成进阶要求Ⅰ后,请尝试将神经网络部署到云服务器(Windows或Linux均可)上(此处推荐阿里云,可以使用学生认证领取三个月的免费服务器)🌍
然后在云服务器上打开我们的WSGI应用,从本地电脑的Apifox上完成POST请求的发送与接收🔄。