Lazy loaded image
Work Record
🔎
字数 1473阅读时长 4 分钟
2025-1-29
2025-2-2
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的两个键,两个键的值AB分别代表操作数的值,这两个值可以在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的帮助就是了。。。
 
上一篇
环境变量的嵌套
下一篇

评论
Loading...