上传文件携带部分参数,根据status接口返回的状态执行不同的操作

img

img

img

1.首先前端像后端发送求,携带的是一个上传的文件,和其他参数,后端向第三方接口upload_file发请求,如果状态码是0,则执行第二步,否则返回错误
2.后端携带部分参数向第三方接口发请求,根据返回的不同的状态码执行不同的操作,如果是1001或者1002则继续向该第三方接口发请求,直至状态码为1003代表成功,则向第三个接口发请求拿结果,或者-1返回错误,如果是1003则直接返回结果(需要注意的是该第三方接口是查文本相似度的算法接口执行的时间比较长)

res1 = request.api1
if res1[]'code'] == 0:
  res2 = request.api2  # 此步骤可以封装,然后使用 while Ture 代替
  if res2['code'] == 1001 or 1002:
     xxxxxx
  elif res2['code'] == -1:
  else:
    xxxxx
else:
 print('False, 上传失败')

你这是需要写一个后端的接口吗?接口中又需要调用第3方的接口,是这个意思吧,给个伪代码参考一下,返回前端的数据理论上是应该进一步加工一下的,目前就把第三方的返回数据直接给前端了

from flask import request
import requests
@app.route("/compare",methods=['GET', 'POST'])
def compare():
    file_path = request.args.get('file_path')
    file_type = request.args.get('file_type')
    order_id = request.args.get('order_id')
    type_id = request.args.get('type_id')
    app_id = request.args.get('app_id')
    file_id = request.args.get('file_id')
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36'}
    url = 'http://xxxxxxxx/' #第三方接口域名或地址
    upload_data = {'file_path':file_path,'file_type':file_type,'order_id':order_id,'type_id':type_id,'app_id':app_id,'file_id':file_id}
    response = requests.post(url=url+'upload_file', data=upload_data, headers=headers)
    result = response.json()
    if result['code']==0:
        status_data = {'order_id':order_id,'type_id':type_id,'app_id':app_id,'file_id':file_id}
        status_resp = requests.post(url=url+'status', data=status_data, headers=headers)
        while status_resp.json()['code']==1001 or status_resp.json()['code']==1002:
            status_resp = requests.post(url=url+'status', data=status_data, headers=headers)
        result = status_resp.json()
        if result['code']==1003:
            result_data = {'order_id':order_id,'type_id':type_id,'app_id':app_id,'file_id':file_id}
            result_resp = requests.post(url=url+'api/result', data=result_data, headers=headers)
            return result_resp.json() #不管结果是啥,一律返回前端
        else:
            return result #任务运行失败
    else:
        return result #任务开启失败