将查询参数作为字典传递给邮递员

时间:2019-02-08 11:48:07

标签: django python-3.x postman

我正在使用postman来访问我的API。我有一个关于通过邮递员params发送查询参数的问题。在我的API中,我使用services = request.GET.get('services')来获取参数,然后返回服务的响应。

我的问题是,如果有多个服务,例如“ A”,“ B”,“ C”,那么我们如何使用邮递员在参数中发送这些服务?

views.py

class SomeAPIView(ModelViewSet):
    def get_queryset(self):
        services = self.request.GET.get('services')
        print(services)            # getting  services
        print(type(services))      #type is string
        response_list = []
        for service in services:
            result = API(service=service)
            response_list.append(result)
        return response_list

我想要获取服务列表,然后遍历该列表以返回对该服务的响应。

1 个答案:

答案 0 :(得分:0)

这取决于您在生产中如何使用此API条目。

首先,在django中,好的方法是使用request.query_params获取查询参数。另外,您必须为get()方法提供默认值,以免在未传递“服务”参数的情况下发生异常。

然后,如果您的服务参数包含某些对象的名称或ID,则可以将其与GET请求中的参数一起以http://someurl?services=A,B,C的形式传递,或在邮递员中名为“ Params”的标签中传递。因此request.query_params.get('sevices', '')将返回包含'A,B,C'的字符串。现在您可以将其拆分为',例如services_names = str.split(',')

无论如何,GET请求的参数只能返回str值。

根据您的示例,它可能类似于:

class SomeAPIView(ModelViewSet):
    def get_queryset(self):
        services = self.request.query_params.get('sevices', '').split(',')
        print(services)            # getting  services
        print(type(services))      # now it will be List[str]
        response_list = []
        for service in services:
            result = API(service=service)
            response_list.append(result)
        return response_list