基于Python的简易地理定位API - sellorm

作者:API传播员 · 2026-01-14 · 阅读时间:5分钟

昨晚,我花了一些时间思考如何改进 Awesome Blogdown 网站。在这个过程中,我对每个网站所在的国家产生了兴趣,于是决定创建一个小型网站 API,通过 IP 地址或域名来查找对应的国家。这不仅是一个有趣的尝试,也让我对地理定位技术有了更深入的了解。


API代码实现

在我的家庭服务器上,我使用了 Python 3。首先,我通过命令行安装了所需的软件包,具体步骤如下:

# 安装所需的软件包
sudo apt-get install python3-pip
pip3 install flask

安装完成后,我编写了一个简单的 API 示例代码。这个 API 服务包含三个端点,每个端点通过 @app.route() 装饰器函数定义:

  1. 第一个端点仅返回一条关于其他两个端点的小提示信息。
  2. 另外两个端点分别负责将 IP 地址或域名转换为对应的国家信息。

以下是代码的核心部分:

if name == ‘main‘:
app.run(debug=False)

app = Flask(__name__)

@app.route('/')
def index():
return "欢迎使用[地理定位 API](https://www.explinks.com/blog/how-to-use-the-ip-home-site-api-for-geolocation-for-free)!请使用 /country_by_name 或 /country_by_ip 端点进行查询。"

@app.route('/country_by_name/')
def country_by_name(name):

# 模拟返回国家信息
return jsonify({"domain": name, "country": "示例国家"})

@app.route('/country_by_ip/')
def country_by_ip(ip):

# 模拟返回国家信息
return jsonify({"ip": ip, "country": "示例国家"})

if __name__ == '__main__':
app.run(debug=False)

为什么这是一个简单的示例?

需要注意的是,这个 API 仅是一个“玩具”项目,主要用于学习和测试。以下是一些原因:

  • Shebang 的使用:代码的第一行是 Shebang,它允许脚本直接在命令行中运行。
  • Flask 内置服务器:代码最后调用了 Flask 的内置服务器来运行 API。然而,Flask 官方文档明确建议不要在生产环境中使用内置服务器,而是使用 WSGI 服务器(如 Gunicorn 或 uWSGI)。但由于这个 API 仅在我的家庭网络中运行,因此我选择忽略这些建议。

如何运行代码?

由于我们使用了 Flask 的内置服务器,并在代码开头添加了 Shebang,因此可以将文件设置为可执行文件并直接运行。以下是具体步骤:

  1. 首先,告诉 Linux Shell 该文件是可执行的:

    chmod +x geo_api.py
  2. 然后,运行该文件以启动 API:

    ./geo_api.py

运行后,终端会显示类似以下的输出:

* 环境:生产环境
警告:不要在生产环境中使用开发服务器。请改用生产 WSGI 服务器。
* 调试模式:关闭

这表明 API 已经启动并可以使用。


如何使用 API?

测试这个 API 最简单的方法是通过 Web 浏览器访问它。在浏览器地址栏中输入以下地址:

http://localhost:5000/

如果您在远程服务器上运行该代码,请将 localhost 替换为服务器的主机名或 IP 地址。需要注意的是,这个 API 并不适合在公共互联网上运行,因此在部署时请务必谨慎。

访问根路径 / 时,您会看到以下提示信息:

欢迎使用地理定位 API!请使用 /country_by_name 或 /country_by_ip 端点进行查询。

您还可以通过更改 URL 测试其他端点。例如:

  • 使用域名查询国家信息:

    http://localhost:5000/country_by_name/flask.pocoo.org

    返回结果示例:

    {
      "domain": "flask.pocoo.org",
      "country": "示例国家"
    }
  • 使用 IP 地址查询国家信息:

    http://localhost:5000/country_by_ip/104.196.200.5

    返回结果示例:

    {
      "ip": "104.196.200.5",
      "country": "示例国家"
    }

结论

使用 Python 和 Flask 创建自己的 API 是一件非常有趣的事情。通过这个项目,我不仅学习了如何快速搭建一个 API 服务,还了解了地理定位的基本原理。希望将来能将这些 API 的结果整合到更复杂的程序中。

现代编程语言(如 JSON 数据并与 API 交互,因此我们有很多机会将这些技术结合起来,创造出更强大的应用。

如果您也尝试创建了自己的 API,请一定告诉我!希望这篇文章能为您提供灵感。

原文链接: https://blog.sellorm.com/2018/05/03/a-toy-geolocation-api-in-python/