2017-01-15 109 views
0

我有一個麻煩調用外部API。這是我的看法:Django外部API調用

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) 

這是我的urls.py:

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

如何更新我的網址和call_api()來獲取用戶的一個:測試/ 1/- 去http://jsonplaceholder.typicode.com/users/1 ,測試/ 2 - 去http://jsonplaceholder.typicode.com/users//2。現在,我擁有該urls.py中的所有用戶。此外,我需要這個所有REST請求。謝謝。

+0

你的問題還不清楚。你的網址已經支持通話測試/ 1 /等。 –

+0

是的,但在這個網址我得到http://jsonplaceholder.typicode.com/users/,我需要去http://jsonplaceholder.typicode.com/users/ 1 – Serko

+0

但是這肯定是'call_api'的責任。 –

回答

1

更新您的call_api

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