在我的代码中,我想知道进行api调用的客户端的ip地址。有什么办法吗?
例如:假设某个人发起了这个api调用,如"http://server_url/api/v1/range/setup/"
在服务器的api.py中我可以读取他机器的IP地址吗?
答案 0 :(得分:1)
我曾经使用过这种方法,它应该从你的请求元数据中返回IP地址:
def getClientIPaddress(request):
http_x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if http_x_forwarded_for:
ip_address = http_x_forwarded_for.split(',')[0]
else:
ip_address = request.META.get('REMOTE_ADDR')
return ip_address
然后,您可以在处理API调用时调用getClientIPaddress方法,例如:
class YourResource(ModelResource):
class Meta:
#meta code here
def obj_create(self, bundle, **kwargs):
ip = getClientIPaddress(bundle.request)
#your code here
def obj_get_list(self, bundle, **kwargs):
ip = getClientIPaddress(bundle.request)
#your code here