考慮以下流程: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. –