考虑以下流程:Django中将请求的响应转换为DRF响应的最优雅方式是什么?
public client ----> DRF API on Service A ------> DRF API on Service B
一些关于服务A的DRF API只是代理到服务B,所以在服务一个特定的API中的是这样的:
class SomeServiceAPI(APIView):
def get(request):
resp = requests.get('http://service-b.com/api/...')
return Response(resp.json())
这枚作品在正常状态下,但它有几个问题:
- 它不代理服务b的实际状态代码。
- 响应中的json序列化的不必要的往返()
- 如果服务b返回一个非json错误,服务不会返回来自服务b的实际错误。
问题是,有没有更好的方法来做到这一点?我看了一下Django Rest Framework Proxy项目,但我不完全确定它是否真正适合我的用例。
疯狂的想法,但你可以建立一个响应适配器。将来自请求包的响应调整为DRF响应。 流程是否在两个方向?公众期望B服务的回应,对吗? – Willemoes
不,只是一个方向,总是从A到B. –