RESTful API 规格书
因为 RESTful API 需要前後端的合作,前端呼叫,後端设计开发,因此最好在正式运作之前先撰写 RESTful API 规格书,如下图所示。必须要确认的资讯有:
图 1、上传图片的 RESTful API 规格范例
设定前端请求
有了这个规格书,就可以开始进行後端的开发,很明显的,我们这个专案只需要一个 RESTful API 功能,就是上传一张图片,由後端来判断这张图片是属於哪一种鱼类,但因为鱼类辨识功能尚未实作,所以我们在此只完成上传图片功能,而回应部分就固定回应一个答案就好,这样方便前端进行开发。
打开 Advanced REST client (ARC)并根据规格书来进行设定,如下图所示:
图 2、Advanced REST client 设定前端请求
进行後端 Django 撰写
打开终端机或是 Putty 连线到 AWS EC2,进行 Django 後端程序的撰写,因为对应到的是 POST 的请求,所以只需要修改 post 方法的修改即可。
新增一个文件夹 upload 用来存放图片,要特别注意相对应的文件夹位置,upload 的所在位置与 fishsite 应用是同等的,如下图所示。
cd ~/fishRecognition/fishsite
mkdir upload
图 3、图片文件夹的所在位置
修改 fishsite/view.py 的 post 方法,主要有三部分,第一部分是接收前端所传来的图片,第二部分是查询资料库,而第三部分则是加上 fishQtn 鱼只数量的栏位,以符合规格书的要求
def post(self, request, *args, **krgs):
print('FishView->post')
uploadFile = request.FILES.get('fileUpload')
# write the uploaded file into the server
filename = r'upload/{}'.format(uploadFile.name)
with open(filename, 'wb') as f:
for chunk in uploadFile.chunks():
f.write(chunk)
print('FishView->upload')
sql = "SELECT fishName, distribution, LatinName FROM fishInfoTbl WHERE mark=1"
with connection.cursor() as cursor:
cursor.execute(sql)
data = dictfetchall(cursor)
print('FishView->' + sql)
data[0]['fishQtn']=1
return JsonResponse(data,safe=False)
图 4、後端 RESTful API 部分程序码
完成了这一部分程序码後就可以启动 Django Web 服务器功能,然後透过 ARC 来呼叫後端服务,成功的话可以看到以下的画面,正常回传回应。
python3 manage.py runserver 0.0.0.0:8000
图 5、ARC 来呼叫後端服务
也在到後端去确认一下档案是否有写入,除了确认档案名称外,也要确认档案大小是否正确,如下图所示。
图 6、确认後端是否有正确接收档案
参考资料
<<: Day07. 想练成 Blue Prism太极拳吗? 忘记所有的招式吧!-从Excel Worksheet读取表格资料
VidPaw 是一个在线影片下载器,可以提供在线影片下载服务。 它支援广泛的网站,如 YouTube...
好一阵子没写单元测试与整合测试了,大家是否觉得有些生疏了呢? 之前的测试都写得很简单,正好昨天好好...
UI版面配置 几近年的FPDC游戏,单角色的控制多以First Preson Shooter玩法为主...
Want to pass the CIS-SIR exam on your first attem...
tags: ItIron2021 Javascript 前言 昨天我们开始了新的系列,剩下这几天也会...