序言

因不可抗力,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"
    }
}