Pygmy API开发指南:如何使用REST接口创建和管理短链接
【免费下载链接】pygmyAn open-source, feature rich & extensible url-shortener + analytics written in Python :cookie:项目地址: https://gitcode.com/gh_mirrors/py/pygmy
Pygmy是一个功能丰富的开源URL缩短器和分析工具,使用Python构建。本指南将详细介绍如何利用Pygmy的REST API接口创建、管理和跟踪短链接,帮助开发者快速集成URL缩短功能到自己的应用中。
快速开始:API接口概览
Pygmy提供了完整的RESTful API接口,主要包括以下核心功能:
- 创建短链接:通过POST请求将长URL转换为简洁的短链接
- 解析短链接:通过GET请求获取短链接对应的原始长URL
- 链接管理:支持自定义短码、设置过期时间和添加描述
- 访问统计:提供详细的点击数据和访问分析
所有API端点都以/api/为前缀,完整的接口定义可在pygmy/rest/urls.py中查看。
API认证与授权
Pygmy API使用JWT(JSON Web Token)进行身份验证,确保接口调用的安全性。
获取访问令牌
POST /api/token通过提供用户名和密码获取访问令牌和刷新令牌:
{ "username": "your_username", "password": "your_password" }成功响应将包含:
access_token:用于API授权的主要令牌refresh_token:用于获取新的访问令牌
使用令牌进行授权
在所有API请求的头部中包含以下授权信息:
Authorization: Bearer <access_token>令牌管理的核心实现位于pygmy/app/auth.py,其中包含了令牌创建、刷新和黑名单管理的完整逻辑。
创建短链接:核心功能详解
创建短链接是Pygmy API最核心的功能,通过简单的POST请求即可实现。
基础创建接口
POST /api/shorten请求参数:
long_url:必需,要缩短的原始长URLshort_code:可选,自定义短链接码(如不提供则自动生成)expire_after:可选,链接过期时间(单位:秒)description:可选,链接描述信息
示例请求:
{ "long_url": "https://example.com/very/long/url/path", "description": "示例长链接" }成功响应:
{ "short_code": "abc123", "short_url": "http://pygmy.example/abc123", "long_url": "https://example.com/very/long/url/path", "created_at": "2026-07-19T10:30:45Z", "expires_at": null, "description": "示例长链接" }短链接创建的核心逻辑实现于pygmy/app/link.py中的shorten函数,该函数处理URL验证、短码生成和数据库存储等关键步骤。
自定义短码
如果需要指定自定义短码,只需在请求中添加short_code参数:
{ "long_url": "https://example.com/special/page", "short_code": "special", "description": "自定义短码示例" }如果指定的短码已被占用,API将返回409 Conflict错误,提示短码不可用。
解析与管理短链接
解析短链接
要获取短链接对应的原始长URL,使用以下接口:
GET /api/unshorten?url=<short_code>示例:
GET /api/unshorten?url=abc123成功响应:
{ "long_url": "https://example.com/very/long/url/path", "short_code": "abc123", "created_at": "2026-07-19T10:30:45Z" }解析功能由pygmy/app/link.py中的unshorten函数实现,该函数处理短码验证、访问统计记录和URL重定向等操作。
获取链接统计信息
Pygmy提供了详细的链接访问统计功能,通过以下接口获取:
GET /api/stats/<short_code>示例响应:
{ "short_code": "abc123", "long_url": "https://example.com/very/long/url/path", "total_clicks": 42, "daily_clicks": [ {"date": "2026-07-19", "count": 15}, {"date": "2026-07-18", "count": 27} ], "referrers": [ {"source": "twitter.com", "count": 18}, {"source": "google.com", "count": 12}, {"source": "direct", "count": 12} ], "countries": [ {"country": "United States", "count": 24}, {"country": "United Kingdom", "count": 8}, {"country": "Canada", "count": 5} ] }统计功能的实现位于pygmy/app/link.py中的link_stats函数,结合了地理信息数据库pygmy/app/GeoLite2-Country.mmdb提供位置分析。
实际应用示例
Python请求示例
以下是使用Python的requests库调用Pygmy API的完整示例:
import requests API_BASE_URL = "http://your-pygmy-instance.com/api" AUTH_CREDENTIALS = ("username", "password") # 获取访问令牌 response = requests.post(f"{API_BASE_URL}/token", json=AUTH_CREDENTIALS) tokens = response.json() headers = {"Authorization": f"Bearer {tokens['access_token']}"} # 创建短链接 shorten_response = requests.post( f"{API_BASE_URL}/shorten", headers=headers, json={ "long_url": "https://example.com/very/long/url", "description": "API示例链接" } ) short_url_data = shorten_response.json() print(f"创建的短链接: {short_url_data['short_url']}") # 获取链接统计 stats_response = requests.get( f"{API_BASE_URL}/stats/{short_url_data['short_code']}", headers=headers ) print("链接统计:", stats_response.json())前端集成示例
Pygmy还提供了前端JavaScript客户端,位于pygmyui/restclient/pygmy.py,可轻松集成到Web应用中:
// 初始化Pygmy客户端 const pygmyClient = new PygmyClient('http://your-pygmy-instance.com'); // 用户登录 pygmyClient.login('username', 'password') .then(tokens => { console.log('登录成功,访问令牌:', tokens.access_token); // 创建短链接 return pygmyClient.shorten('https://example.com/frontend-integration'); }) .then(shortUrlData => { console.log('创建的短链接:', shortUrlData.short_url); }) .catch(error => { console.error('操作失败:', error); });错误处理与状态码
Pygmy API使用标准HTTP状态码表示请求结果:
- 200 OK:请求成功
- 201 Created:资源创建成功(如短链接创建)
- 400 Bad Request:请求参数错误
- 401 Unauthorized:未授权或令牌过期
- 403 Forbidden:权限不足
- 404 Not Found:短链接不存在
- 409 Conflict:自定义短码已存在
- 500 Internal Server Error:服务器内部错误
详细的错误处理逻辑可在pygmy/exception/目录中找到,包含了各种特定错误类型的定义和处理方法。
高级功能与扩展
批量操作
Pygmy支持批量创建短链接,通过发送包含多个URL的数组实现:
POST /api/shorten/batch链接权限控制
可以为短链接设置访问密码或限制特定IP访问:
{ "long_url": "https://example.com/private", "secret_key": "securepassword", "allowed_ips": ["192.168.1.0/24", "10.0.0.1"] }这些高级功能的实现位于pygmy/validator/link.py中,提供了全面的链接验证和权限控制机制。
总结与资源
Pygmy提供了一套功能完善、易于使用的REST API接口,使开发者能够轻松集成URL缩短和分析功能到自己的应用中。无论是简单的短链接创建,还是复杂的访问统计分析,Pygmy都能满足各种场景需求。
要开始使用Pygmy API,首先克隆项目仓库:
git clone https://gitcode.com/gh_mirrors/py/pygmy项目的完整文档和更多示例可在以下资源中找到:
- API接口定义:pygmy/rest/urls.py
- 核心功能实现:pygmy/app/link.py
- 认证机制:pygmy/app/auth.py
- 测试用例:tests/test_integration.py
通过本指南,您应该已经掌握了Pygmy API的基本使用方法。如需了解更多高级功能和最佳实践,请参考项目源代码和测试用例。
【免费下载链接】pygmyAn open-source, feature rich & extensible url-shortener + analytics written in Python :cookie:项目地址: https://gitcode.com/gh_mirrors/py/pygmy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考