我试图解决与我的api相关的问题并希望重构我的代码以便向后工作,我的意思是如果前端没有向我发送我想要的数据,请求应该去通过,如果前端发送,它仍然会照常工作。
所以粗略地说我的创建函数工作正常但是,当前端团队发送的数据没有服务器期望的时候它会破坏500内部服务器错误,但我想让它成为可选的,即使预期的数据没有被发送,我想获得200 Http响应,这里是代码因为job_invoice上的关键错误而中断的地方。我试图在我的for循环中使用中断来绕过它..但仍然。
job_invoice_data = inv_data['job_invoice']
job_invoice = JobInvoice.objects.create(job=job_instance, **job_invoice_data)
obj.job_invoice = job_invoice
# Create an InvoiceLineItem for each element in invoice_line_item
for invoice_line_item in inv_data['invoice_line_item']:
invoice_line_item['job_invoice'] = job_invoice.id
if invoice_line_item['job_invoice'] is None:
break
invoice_line_item_serializer = InvoiceLineItemSerializer(data=invoice_line_item)
if invoice_line_item_serializer.is_valid():
invoice_line_item_obj = invoice_line_item_serializer.save()
else:
logger.debug("Couldn't create invoice line item: {}".format(invoice_line_item))
答案 0 :(得分:0)
简单解决方案:使用Try and Catch Blocks
try:
#Parse all parameters here
except:
pass
更复杂:
检查参数的可用性,并仅在可用时继续,但使用默认值none。
例如在Flask中,您可以执行以下操作:
@app.route("/func/<required_param>", defaults={"opt1": None, "opt2": None,"opt3": None})