password
comment
type
status
date
slug
summary
tags
category
icon
AI custom autofill
背景
在我们组队参加比赛时,一项免不了的工作就是完成与前后端同学的交接。
对于本题,我们设想以下最简单的一种情况:后端同学向我们发送请求(包含传输的文件以及相应的文件参数等信息),我们需要顺利接受后端同学发送的文件,并根据相应的参数等信息选择我们的代码工作模式,最终成功将网络输出结果再发送回后端同学。
一个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请求的发送与接收。
在完成本任务的过程中你们可能会遇到包括但不仅限于以下的问题:
- 云服务器性能过低,反应过慢
- 在服务器上从零开始配环境十分耗时
- 为什么在服务器上的WSGI应用无法接收到POST请求呢🧐
- 如何才能使POST请求被顺利接收呢😵💫
······
注意事项
- 确保你的Flask应用能够正确解析和处理来自Apifox的请求。
- 在进阶任务中,确保你选择的神经网络模型与文件类型相匹配。
- 在学习过程中可以借助AI工具的帮助。
实际上在我进行比赛的过程中,这一Part的大部分内容都是Chat老师教我的。只不过大家谨记不要无脑借助AI的帮助就是了。。。
- 作者:Gintmr
- 链接:https://gintmr.20250130.xyz//article/189af1ce-0c90-800d-8b0e-e776d443e240
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。