序言
因不可抗力,inis社区关闭ip定位服务,导致小站评论ip定位error,好久好久前做api站的时候做过ip定位服务,用着还不错,索性直接拿来继续用,数据源腾讯位置服务,腾讯在这方面好像没抠门过,本站做了数据缓存,并发量应该也是够用的
inis后端修复方法
/app/api/controller/default/Location.php
//删除101行-138行粘贴以下内容
//或者更改121行
// IP获取定位信息
public function ip($request)
{
// 获取请求参数
$param = $request->param();
$data = [];
$code = 400;
$msg = Lang::get('无数据!');
$ip = !empty($param['ip']) ? $param['ip'] : $this->helper->GetClientIP();
// 设置缓存名称
$cache_name = json_encode(array_merge(['IAPI'=>'location'], $param));
// 检查是否存在请求的缓存数据
if (Cache::has($cache_name) and $this->ApiCache) $data = json_decode(Cache::get($cache_name), true);
else {
// 获取数据
$result = $this->helper->get('https://api.zets.cn/api/location/ip', ['ip'=>$ip], ['origin'=>$this->helper->domain()]);
if ($result['code'] == 200) $data = $result['data'];
else $data = $result;
if ($this->ApiCache) Cache::tag(['gothe',$cache_name])->set($cache_name, json_encode($data));
}
$code = 200;
$msg = Lang::get('无数据!');
// 逆向思维,节省代码行数
if (empty($data)) $code = 204;
else $msg = Lang::get('数据请求成功!');
return ['data'=>$data,'code'=>$code,'msg'=>$msg];
}</code></pre>
ip定位接口文档
接口状态
已完成
接口URL
https://api.zets.cn/api/location/ip?ip=112.12.120.208
请求方式
GET
Content-Type
none
请求Query参数
参数名
示例值
参数类型
是否必填
参数描述
ip
112.12.120.208
String
是
ipv4
cache
false
Boolean
否
是否获取缓存内容
成功响应示例
{
"code": 200,
"msg": "数据请求成功!",
"data": {
"status": "1",
"info": "OK",
"infocode": 330700,
"country": "中国",
"province": "浙江省",
"city": "金华市",
"district": "",
"isp": "",
"location": "119.64759,29.07812",
"ip": "112.12.120.208"
}
}