首页 > 解决方案 > 如何在 DRF 中更新来自外部 api 的响应

问题描述

我正在处理一项任务,该任务需要请求第三方 API 并获取一些响应并更新其密钥并呈现为 DRF 响应。

这可以通过序列化程序实现吗?

这就是我在做什么。

response = BooksService().get_books()
transformed_data = self.transform_data(response)
return Response(transformed_data)

def transform_data(response):
    data = response.json()    
    required_data = {
        key_i_need_1 = data.get(KeyINeed1)
        key_i_need_2 = data.get(KeyINeed2)
        ...
    }
    return required_data

标签: pythonserializationdjango-rest-framework

解决方案


我认为你可以尝试做这样的事情。

序列化程序将仅尊重其中定义的字段,其他字段将被忽略。

class ResponseSerializer(Serializer):
    required_field1 = serializers.FieldType()
    required_field2 = serializers.FieldType()
    required_field3 = serializers.FieldType()
    required_field4 = serializers.FieldType()
    required_field5 = serializers.FieldType()

    class Meta:
        fields = (required_field1, required_field2, required_field3, required_field4, required_field5)


def view():
    response = requests.get(external_api).json()
    modified_response = ResponseSerializer(data=response)
    return Response(modified_response.data)

推荐阅读