LogoLikeDo
  • 功能
  • 博客
  • 价格
开发者的API自动化指南:LikeDo完整教程
2025/12/20

开发者的API自动化指南:LikeDo完整教程

学习如何使用LikeDo的REST API自动化短链接创建、邮件管理和文件上传。包含Python、JavaScript和cURL的完整代码示例。

作为开发者,通过网页界面手动创建短链接、管理临时邮箱或上传文件是生产力杀手。这就是API自动化的用武之地。

LikeDo提供全面的REST API,允许你将链接管理、邮件服务和文件存储直接集成到应用程序、CI/CD流水线和自动化工作流程中。

本指南将展示如何使用LikeDo API自动化常见任务,并提供实用代码示例。

获取API密钥

在使用API之前,需要生成API密钥:

  1. 登录LikeDo仪表板
  2. 导航到设置 → API密钥
  3. 点击生成新API密钥
  4. 复制并安全存储密钥

安全最佳实践:将API密钥存储在环境变量中,永远不要在源代码中硬编码。

# .env file
LIKEDO_API_KEY=your_api_key_here

API认证

所有API请求都需要在Authorization头中使用API密钥进行认证:

Authorization: Bearer YOUR_API_KEY

用例1:自动化短链接创建

场景

你正在构建一个动态生成产品页面的SaaS应用程序。你希望为每个新产品自动创建品牌短链接。

Python示例

import requests
import os

API_KEY = os.getenv('LIKEDO_API_KEY')
BASE_URL = 'https://api.like.do/v1'

def create_short_link(destination_url, custom_slug=None, domain=None):
    """Create a short link via LikeDo API"""

    headers = {
        'Authorization': f'Bearer {API_KEY}',
        'Content-Type': 'application/json'
    }

    payload = {
        'url': destination_url,
        'slug': custom_slug,
        'domain': domain,
        'tags': ['auto-generated', 'product'],
        'expiresAt': None  # Optional expiration
    }

    response = requests.post(
        f'{BASE_URL}/links',
        headers=headers,
        json=payload
    )

    if response.status_code == 201:
        data = response.json()
        return data['shortUrl']
    else:
        raise Exception(f"API Error: {response.text}")

# Example usage
product_url = "https://mystore.com/products/awesome-widget-2026"
short_link = create_short_link(
    destination_url=product_url,
    custom_slug="widget-2026",
    domain="go.mystore.com"
)

print(f"Short link created: {short_link}")
# Output: https://go.mystore.com/widget-2026

JavaScript/Node.js示例

const axios = require('axios');

const API_KEY = process.env.LIKEDO_API_KEY;
const BASE_URL = 'https://api.like.do/v1';

async function createShortLink(destinationUrl, customSlug = null, domain = null) {
  try {
    const response = await axios.post(
      `${BASE_URL}/links`,
      {
        url: destinationUrl,
        slug: customSlug,
        domain: domain,
        tags: ['auto-generated', 'product']
      },
      {
        headers: {
          'Authorization': `Bearer ${API_KEY}`,
          'Content-Type': 'application/json'
        }
      }
    );

    return response.data.shortUrl;
  } catch (error) {
    console.error('API Error:', error.response?.data || error.message);
    throw error;
  }
}

// Example usage
(async () => {
  const shortLink = await createShortLink(
    'https://mystore.com/products/awesome-widget-2026',
    'widget-2026',
    'go.mystore.com'
  );

  console.log(`Short link created: ${shortLink}`);
})();

cURL示例

curl -X POST https://api.like.do/v1/links \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://mystore.com/products/awesome-widget-2026",
    "slug": "widget-2026",
    "domain": "go.mystore.com",
    "tags": ["auto-generated", "product"]
  }'

用例2:从CSV批量创建链接

场景

你有一个包含1,000个产品URL的CSV文件,想为所有产品生成短链接。

Python脚本

import csv
import requests
import time
from typing import List, Dict

API_KEY = os.getenv('LIKEDO_API_KEY')
BASE_URL = 'https://api.like.do/v1'

def create_bulk_links(csv_file: str) -> List[Dict]:
    """Create short links from CSV file"""

    results = []

    with open(csv_file, 'r') as file:
        reader = csv.DictReader(file)

        for row in reader:
            try:
                headers = {
                    'Authorization': f'Bearer {API_KEY}',
                    'Content-Type': 'application/json'
                }

                payload = {
                    'url': row['url'],
                    'slug': row.get('slug'),
                    'domain': row.get('domain', 'go.mystore.com')
                }

                response = requests.post(
                    f'{BASE_URL}/links',
                    headers=headers,
                    json=payload
                )

                if response.status_code == 201:
                    data = response.json()
                    results.append({
                        'original': row['url'],
                        'short': data['shortUrl'],
                        'status': 'success'
                    })
                else:
                    results.append({
                        'original': row['url'],
                        'error': response.text,
                        'status': 'failed'
                    })

                # Rate limiting: 10 requests per second
                time.sleep(0.1)

            except Exception as e:
                results.append({
                    'original': row['url'],
                    'error': str(e),
                    'status': 'failed'
                })

    return results

# Example CSV format:
# url,slug,domain
# https://example.com/product1,prod1,go.mystore.com
# https://example.com/product2,prod2,go.mystore.com

results = create_bulk_links('products.csv')

# Export results
with open('short_links_output.csv', 'w', newline='') as file:
    writer = csv.DictWriter(file, fieldnames=['original', 'short', 'status', 'error'])
    writer.writeheader()
    writer.writerows(results)

print(f"Processed {len(results)} links")
print(f"Successful: {sum(1 for r in results if r['status'] == 'success')}")
print(f"Failed: {sum(1 for r in results if r['status'] == 'failed')}")

用例3:用户引导的自动邮件创建

场景

当新用户注册时,自动为其创建临时邮箱以接收引导材料,而不暴露真实邮箱。

Python示例

import requests
import hashlib
import os

API_KEY = os.getenv('LIKEDO_API_KEY')
BASE_URL = 'https://api.like.do/v1'

def create_temp_email(user_id: str, domain: str = 'onboard.myapp.com') -> dict:
    """Create temporary email for user onboarding"""

    # Generate unique email based on user ID
    email_hash = hashlib.md5(user_id.encode()).hexdigest()[:8]
    temp_email = f"onboard-{email_hash}@{domain}"

    headers = {
        'Authorization': f'Bearer {API_KEY}',
        'Content-Type': 'application/json'
    }

    payload = {
        'email': temp_email,
        'expiresIn': 7,  # Expires in 7 days
        'forwardTo': None,  # Don't forward, just receive
        'tags': ['onboarding', f'user-{user_id}']
    }

    response = requests.post(
        f'{BASE_URL}/emails',
        headers=headers,
        json=payload
    )

    if response.status_code == 201:
        return response.json()
    else:
        raise Exception(f"API Error: {response.text}")

# Example: User signs up
new_user_id = "usr_12345"
temp_email_data = create_temp_email(new_user_id)

print(f"Temporary email created: {temp_email_data['email']}")
print(f"Expires at: {temp_email_data['expiresAt']}")

# Send this email to the user for receiving onboarding materials

用例4:文件上传和分发自动化

场景

你每天生成报告,想自动上传它们,然后与团队分享下载链接。

Python示例

import requests
import os
from datetime import datetime

API_KEY = os.getenv('LIKEDO_API_KEY')
BASE_URL = 'https://api.like.do/v1'

def upload_file_and_get_link(file_path: str, password: str = None, expires_in_days: int = 7) -> dict:
    """Upload file and get shareable download link"""

    headers = {
        'Authorization': f'Bearer {API_KEY}'
    }

    # Prepare file upload
    with open(file_path, 'rb') as file:
        files = {
            'file': (os.path.basename(file_path), file)
        }

        data = {
            'password': password,
            'expiresIn': expires_in_days,
            'maxDownloads': None  # Unlimited downloads
        }

        response = requests.post(
            f'{BASE_URL}/files',
            headers=headers,
            files=files,
            data=data
        )

    if response.status_code == 201:
        return response.json()
    else:
        raise Exception(f"API Error: {response.text}")

# Example: Upload daily report
report_date = datetime.now().strftime('%Y-%m-%d')
report_path = f'reports/daily-report-{report_date}.pdf'

upload_result = upload_file_and_get_link(
    file_path=report_path,
    password='team2026',
    expires_in_days=7
)

print(f"File uploaded: {upload_result['downloadUrl']}")
print(f"Password: team2026")
print(f"Expires: {upload_result['expiresAt']}")

# Automatically send download link to team via Slack/Email

用例5:分析检索和报告

场景

提取所有链接的点击分析并生成每周报告。

Python示例

import requests
import pandas as pd
from datetime import datetime, timedelta

API_KEY = os.getenv('LIKEDO_API_KEY')
BASE_URL = 'https://api.like.do/v1'

def get_link_analytics(link_id: str, start_date: str, end_date: str) -> dict:
    """Retrieve analytics for a specific link"""

    headers = {
        'Authorization': f'Bearer {API_KEY}'
    }

    params = {
        'startDate': start_date,
        'endDate': end_date
    }

    response = requests.get(
        f'{BASE_URL}/links/{link_id}/analytics',
        headers=headers,
        params=params
    )

    if response.status_code == 200:
        return response.json()
    else:
        raise Exception(f"API Error: {response.text}")

def generate_weekly_report():
    """Generate weekly analytics report for all links"""

    # Get date range for last 7 days
    end_date = datetime.now()
    start_date = end_date - timedelta(days=7)

    # Get all links
    headers = {'Authorization': f'Bearer {API_KEY}'}
    links_response = requests.get(f'{BASE_URL}/links', headers=headers)
    links = links_response.json()['data']

    # Collect analytics for each link
    report_data = []

    for link in links:
        analytics = get_link_analytics(
            link['id'],
            start_date.isoformat(),
            end_date.isoformat()
        )

        report_data.append({
            'Short URL': link['shortUrl'],
            'Destination': link['url'],
            'Clicks': analytics['totalClicks'],
            'Unique Visitors': analytics['uniqueVisitors'],
            'Top Country': analytics['topCountry'],
            'Top Referrer': analytics['topReferrer']
        })

    # Create DataFrame and export to CSV
    df = pd.DataFrame(report_data)
    df.to_csv(f'weekly-report-{end_date.strftime("%Y-%m-%d")}.csv', index=False)

    print(f"Weekly report generated with {len(report_data)} links")
    print(f"Total clicks: {df['Clicks'].sum()}")

generate_weekly_report()

高级自动化:CI/CD集成

GitHub Actions示例

部署新功能时自动创建短链接:

name: Deploy and Create Short Link

on:
  push:
    branches: [ main ]

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Deploy to production
        run: |
          # Your deployment script
          ./deploy.sh

      - name: Create short link for new feature
        env:
          LIKEDO_API_KEY: ${{ secrets.LIKEDO_API_KEY }}
        run: |
          curl -X POST https://api.like.do/v1/links \
            -H "Authorization: Bearer $LIKEDO_API_KEY" \
            -H "Content-Type: application/json" \
            -d '{
              "url": "https://myapp.com/new-feature",
              "slug": "new-feature-'$(date +%Y%m%d)'",
              "domain": "go.myapp.com"
            }'

错误处理最佳实践

始终实施适当的错误处理:

import requests
from requests.exceptions import RequestException
import time

def api_call_with_retry(url, headers, payload, max_retries=3):
    """Make API call with exponential backoff retry"""

    for attempt in range(max_retries):
        try:
            response = requests.post(url, headers=headers, json=payload, timeout=10)

            if response.status_code == 201:
                return response.json()
            elif response.status_code == 429:  # Rate limit
                retry_after = int(response.headers.get('Retry-After', 60))
                print(f"Rate limited. Retrying after {retry_after} seconds...")
                time.sleep(retry_after)
            elif response.status_code >= 500:  # Server error
                print(f"Server error. Retrying (attempt {attempt + 1}/{max_retries})...")
                time.sleep(2 ** attempt)  # Exponential backoff
            else:
                raise Exception(f"API Error {response.status_code}: {response.text}")

        except RequestException as e:
            if attempt == max_retries - 1:
                raise
            print(f"Request failed: {e}. Retrying...")
            time.sleep(2 ** attempt)

    raise Exception("Max retries exceeded")

速率限制

LikeDo API具有以下速率限制:

  • 免费套餐:100次请求/小时
  • Pro套餐:1,000次请求/小时
  • 终身套餐:5,000次请求/小时

在代码中实施速率限制:

import time
from collections import deque

class RateLimiter:
    def __init__(self, max_calls, period):
        self.max_calls = max_calls
        self.period = period
        self.calls = deque()

    def __call__(self, func):
        def wrapper(*args, **kwargs):
            now = time.time()

            # Remove old calls outside the period
            while self.calls and self.calls[0] < now - self.period:
                self.calls.popleft()

            # Wait if limit reached
            if len(self.calls) >= self.max_calls:
                sleep_time = self.period - (now - self.calls[0])
                if sleep_time > 0:
                    time.sleep(sleep_time)
                self.calls.popleft()

            self.calls.append(now)
            return func(*args, **kwargs)

        return wrapper

# Usage
@RateLimiter(max_calls=100, period=3600)  # 100 calls per hour
def create_link(url):
    # API call here
    pass

结论

LikeDo的API开启了无限的自动化可能性:

  • 将链接创建集成到应用程序工作流程中
  • 自动化邮件管理以进行测试和隐私保护
  • 构建自定义分析仪表板
  • 创建具有自动链接生成的CI/CD流水线

本指南中的示例为构建自己的自动化工作流程提供了坚实的基础。

准备好自动化工作流程了吗?

👉 在LikeDo获取API密钥

停止点击。开始自动化。

全部文章

作者

avatar for LikeDo
LikeDo

分类

    获取API密钥API认证用例1:自动化短链接创建场景Python示例JavaScript/Node.js示例cURL示例用例2:从CSV批量创建链接场景Python脚本用例3:用户引导的自动邮件创建场景Python示例用例4:文件上传和分发自动化场景Python示例用例5:分析检索和报告场景Python示例高级自动化:CI/CD集成GitHub Actions示例错误处理最佳实践速率限制结论

    更多文章

    为什么 LikeDo 是 2026 年最好的开发者一体化平台
    开发者新闻产品

    为什么 LikeDo 是 2026 年最好的开发者一体化平台

    了解为什么全球数千名开发者正在抛弃 Bitly、Cloudflare、Dropbox 等多款工具,集体转向 LikeDo 这款真正为开发者打造的一站式解决方案。

    avatar for LikeDo
    LikeDo
    2025/12/01
    真正有效的推荐计划 - 实施指南
    营销

    真正有效的推荐计划 - 实施指南

    学习如何构建和优化能够推动增长的推荐计划。包含指标、激励措施和自动化策略的完整指南。

    avatar for LikeDo
    LikeDo
    2025/12/24
    把域名邮箱无缝融入日常工作流
    开发者新闻产品

    把域名邮箱无缝融入日常工作流

    开发者、营销人、隐私党都在用自有域名临时邮箱转发,彻底告别垃圾邮件,主邮箱永远干干净净。

    avatar for LikeDo
    LikeDo
    2025/11/06

    邮件列表

    加入我们的社区

    订阅邮件列表,及时获取最新消息和更新

    LogoLikeDo

    一个集短链接、自定义邮箱、AI 内容创作、文件存储和强大 API 于一体的效率平台。

    GitHubGitHubTwitterX (Twitter)DiscordEmail
    产品
    • 功能
    • 价格
    • 常见问题
    资源
    • 博客
    • 文档
    • Open API
    • 更新日志
    公司
    • 关于我们
    • 联系我们
    • 邮件列表
    法律
    • Cookie政策
    • 隐私政策
    • 服务条款
    GitHubMonitor your Domain Rating with FrogDROpen-Launch Top 1 Daily WinnerFazier badgeLikeDo - Centralize your digital productivity | Product HuntUneed Embed BadgeListed on Turbo0
    © 2026 PowerDo LLC. All Rights Reserved.