Serko
Serko

Reputation: 321

Django external api calls

I have a trouble calling external api. This is my view:

class TestView(APIView):

    def call_api(self, request, *args, **kwargs):
        headers = {}
        url = 'http://jsonplaceholder.typicode.com/users/'
        method = request.method.lower()
        method_map = {
            'get': requests.get,
            'post': requests.post,
            'put': requests.put,
            'patch': requests.patch,
            'delete': requests.delete
        }
        return Response(method_map[method](url, headers=headers, data=json.dumps(request.data)).json())

    def get(self, request, *args, **kwargs):
        return self.call_api(request, *args, **kwargs)

    def post(self, request, *args, **kwargs):
        return self.call_api(request, *args, **kwargs)

    def put(self, request, *args, **kwargs):
        return self.call_api(request, *args, **kwargs)

    def patch(self, request, *args, **kwargs):
        return self.call_api(request, *args, **kwargs)

    def delete(self, request, *args, **kwargs):
        return self.call_api(request, *args, **kwargs)

This is my urls.py:

url(r'^test/(?P<pk>[0-9]+)/$', TestView.as_view()),

How can i update my urls and call_api() to get one of users: test/1/ - go to http://jsonplaceholder.typicode.com/users/1, test/2 - go to http://jsonplaceholder.typicode.com/users//2. Now i have all users in that urls.py. Also i need this for all REST requests. Thanks.

Upvotes: 0

Views: 7130

Answers (1)

kartikmaji
kartikmaji

Reputation: 976

Update your call_api to

def call_api(self, request, *args, **kwargs):
    headers = {}
    url = 'http://jsonplaceholder.typicode.com/users/'+args[0]
    # args[0] = pk

Upvotes: 1

Related Questions