如何解决如何在 django rest 框架中分块发送 json 响应?
我正在开发一个项目 Django rest 框架,我必须在我的 API 类视图中调用 4 个第三方 API 并返回结果。它工作正常。但现在我希望 API 在像视频流一样一一执行每个 API 后立即返回响应。
类 FraudDetection(APIView): permission_classes = [IsAuthenticated] authentication_classes = (TokenAuthentication,)
def post(self,request,format=None):
serializer = FraudDetectorSerializer(data=request.data)
if serializer.is_valid():
my_date = datetime.now()
# '2020-07-13T23:18:21Z',time_stamp = my_date.strftime('%Y-%m-%dT%H:%M:%SZ')
# 1st API CALL
aws_full_output = fruad_detector(eventTimestamp1=time_stamp,billing_address=request.data['street1_address'],billing_postal=str(request.data['postal_code']),billing_state=request.data['state_code'],email_address=request.data[
'email_address'],ip_address=request.data['ip_address'],phone_number=request.data['phone_number'],user_agent=request.data['user_agent'])
# 2nd API CALL
aws_minimal_output = fruad_detector2(
eventTimestamp1=time_stamp,email_address=request.data['email_address'])
# 3rd API CALL
ekata_phone_output = ekata_phone_api(
phone_number=request.data["phone_number"])
# 4th API CALL
ekata_address_output = ekata_address_api(street_line_1=request.data["street1_address"],street_line_2=request.data['street2_address'],city=request.data[
'city'],postal_code=request.data['postal_code'],state_code=request.data['state_code'],country_code=request.data['country_code'])
# 5th API CALL
ekata_transaction_ouput = ekata_transaction_api(name=request.data['name'],street1=request.data['street1_address'],street2=request.data['street2_address'],city=request.data['city'],country_code=request.data['country_code'],email=request.data['email_address'],ip_address=request.data["ip_address"],transaction_id=request.data['transaction_id'],transaction_time=request.data['transaction_time'])
Result.objects.create(user=request.user,name=request.data['name'],street_1=request.data['street1_address'],street_2=request.data['street2_address'],user_agent=request.data['user_agent'],transaction_time=request.data['transaction_time'],output_aws_full=aws_full_output,output_aws_minimal=aws_minimal_output,output_ekata_phone=ekata_phone_output,output_ekata_address=ekata_address_output,output_ekata_transaction=ekata_transaction_ouput)
outcome = {'first_detector_output': aws_full_output,'second_detector_output': aws_minimal_output,'third_detector_output': ekata_phone_output,'fourth_detector_output': ekata_address_output,"fifth_detector_output": ekata_transaction_ouput}
return Response(outcome,status.HTTP_200_OK)
return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。