Cách Sử Dụng Kỹ Năng Code Của Claude Cho API Request & Networking (Data Fetching)

Ashley Goolam

Ashley Goolam

21 tháng 1 2026

Cách Sử Dụng Kỹ Năng Code Của Claude Cho API Request & Networking (Data Fetching)

Việc tạo thủ công các lệnh gọi `fetch`, xử lý token xác thực và phân tích phản hồi API cho mỗi tích hợp mới tương đương với việc viết mã assembly cho các ứng dụng web. Các kỹ năng Claude Code để tìm nạp dữ liệu biến các yêu cầu HTTP thành các công cụ khai báo, có thể tái sử dụng, hiểu các mẫu xác thực, phân trang và xác thực phản hồi, loại bỏ mã lặp lại trong khi vẫn đảm bảo tính nhất quán trên toàn bộ cơ sở mã của bạn.

Tại sao kỹ năng mạng API lại quan trọng đối với quy trình phát triển

Mỗi nhà phát triển dành hàng giờ cho các công việc API lặp đi lặp lại: thiết lập tiêu đề cho OAuth 2.0, triển khai thuật toán backoff lũy thừa cho các điểm cuối bị giới hạn tốc độ và viết trình bảo vệ kiểu cho các phản hồi JSON không thể đoán trước. Các tác vụ này dễ gây lỗi và gắn chặt với các dịch vụ cụ thể, khiến chúng khó kiểm tra và bảo trì. Claude Code Skills trừu tượng hóa sự phức tạp này thành các công cụ được kiểm soát phiên bản, có thể kiểm tra mà trợ lý AI của bạn có thể gọi bằng ngôn ngữ tự nhiên.

Sự thay đổi là từ các lệnh gọi API mang tính mệnh lệnh sang tìm nạp dữ liệu mang tính khai báo. Thay vì viết fetch(url, { headers: {...} }), bạn mô tả ý định: “Tìm nạp dữ liệu người dùng từ GitHub API bằng token từ ENV và trả về kết quả đã được gõ kiểu.” Kỹ năng này xử lý việc quản lý thông tin xác thực, logic thử lại và phân tích phản hồi, trả về dữ liệu có kiểu mạnh mẽ mà ứng dụng của bạn có thể sử dụng ngay lập tức.

💡
Bạn muốn một công cụ kiểm thử API tuyệt vời tạo ra Tài liệu API đẹp mắt?

Bạn muốn một nền tảng tích hợp, tất cả trong một để Đội ngũ Nhà phát triển của bạn làm việc cùng nhau với năng suất tối đa?

Apidog đáp ứng tất cả các yêu cầu của bạn và thay thế Postman với mức giá phải chăng hơn nhiều!
button

Thiết lập kỹ năng tìm nạp dữ liệu trong Claude Code

Bước 1: Cài đặt Claude Code và cấu hình MCP

Nếu bạn chưa cài đặt Claude Code CLI:

npm install -g @anthropic-ai/claude-code
claude --version  # Nên hiển thị >= 2.0.70

Tạo thư mục và tệp cấu hình MCP:

# macOS/Linux
mkdir -p ~/.config/claude-code
touch ~/.config/claude-code/config.json

# Windows
mkdir %APPDATA%\claude-code
echo {} > %APPDATA%\claude-code\config.json
claude code

Bước 2: Clone và Build kỹ năng tìm nạp dữ liệu

Kỹ năng tìm nạp dữ liệu chính thức cung cấp các mẫu cho yêu cầu REST, GraphQL và HTTP chung.

git clone https://github.com/anthropics/skills.git
cd skills/skills/data-fetching
npm install
npm run build

Thao tác này biên dịch các trình xử lý TypeScript thành dist/index.js.

Bước 3: Cấu hình MCP để tải kỹ năng

Chỉnh sửa ~/.config/claude-code/config.json:

{
  "mcpServers": {
    "data-fetching": {
      "command": "node",
      "args": ["/absolute/path/to/skills/data-fetching/dist/index.js"],
      "env": {
        "DEFAULT_TIMEOUT": "30000",
        "MAX_RETRIES": "3",
        "RATE_LIMIT_PER_MINUTE": "60",
        "CREDENTIALS_STORE": "~/.claude-credentials.json"
      }
    }
  }
}

Quan trọng:

claudes skills

Bước 4: Thiết lập kho lưu trữ thông tin xác thực

Tạo tệp thông tin xác thực để tránh mã hóa cứng token:

# Tạo kho lưu trữ thông tin xác thực được mã hóa
mkdir -p ~/.claude
echo '{}' > ~/.claude/credentials.json
chmod 600 ~/.claude/credentials.json

Thêm token API của bạn:

{
  "github": {
    "token": "ghp_your_github_token_here",
    "baseUrl": "https://api.github.com"
  },
  "slack": {
    "token": "xoxb-your-slack-token",
    "baseUrl": "https://slack.com/api"
  },
  "custom-api": {
    "token": "Bearer your-jwt-token",
    "baseUrl": "https://api.yourcompany.com",
    "headers": {
      "X-API-Version": "v2"
    }
  }
}

Kỹ năng này đọc tệp này khi khởi động và chèn thông tin xác thực vào các yêu cầu.

Bước 5: Xác minh cài đặt

claude

Sau khi tải, chạy:

/list-tools

Bạn sẽ thấy:

Available tools:
- data-fetching:rest-get
- data-fetching:rest-post
- data-fetching:rest-put
- data-fetching:rest-delete
- data-fetching:graphql-query
- data-fetching:graphql-mutation
- data-fetching:raw-http

Các mẫu yêu cầu API cốt lõi

1. Yêu cầu GET RESTful

Công cụ: data-fetching:rest-get
Trường hợp sử dụng: Tìm nạp dữ liệu từ các điểm cuối REST với xác thực, phân trang và lưu vào bộ nhớ cache

Tham số:

Ví dụ: Tìm nạp kho lưu trữ của người dùng GitHub

Sử dụng rest-get để tìm nạp các kho lưu trữ cho người dùng "anthropics" từ GitHub API, bao gồm phân trang 100 mục mỗi trang và chỉ trả về tên, mô tả và số lượng stargazers.

Thực thi được tạo:

// Trình xử lý thực thi:
const response = await fetch('https://api.github.com/users/anthropics/repos', {
  headers: {
    'Authorization': 'token ghp_your_github_token_here',
    'Accept': 'application/vnd.github.v3+json'
  },
  params: {
    per_page: 100,
    page: 1
  }
});

// Chuyển đổi với JMESPath
const transformed = jmespath.search(response, '[*].{name: name, description: description, stars: stargazers_count}');
return transformed;

Cách sử dụng Claude Code:

claude --skill data-fetching \
  --tool rest-get \
  --params '{"service": "github", "endpoint": "/users/anthropics/repos", "params": {"per_page": 100}, "transform": "[*].{name: name, description: description, stars: stargazers_count}"}'

2. Yêu cầu POST/PUT/DELETE

Công cụ: data-fetching:rest-post / rest-put / rest-delete
Trường hợp sử dụng: Tạo, cập nhật hoặc xóa tài nguyên

Tham số:

Ví dụ: Tạo một issue trên GitHub

Sử dụng rest-post để tạo một issue trong kho anthorpics/claude với tiêu đề "Feature Request: MCP Tool Caching", phần thân chứa mô tả và các nhãn ["enhancement", "mcp"].

Thực thi:

await fetch('https://api.github.com/repos/anthropics/claude/issues', {
  method: 'POST',
  headers: {
    'Authorization': 'token ghp_...',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    title: "Feature Request: MCP Tool Caching",
    body: "Description of the feature...",
    labels: ["enhancement", "mcp"]
  })
});

3. Truy vấn GraphQL

Công cụ: data-fetching:graphql-query
Trường hợp sử dụng: Tìm nạp dữ liệu phức tạp với các mối quan hệ lồng nhau

Tham số:

Ví dụ: Tìm nạp các issue của kho lưu trữ kèm bình luận

Sử dụng graphql-query để tìm nạp 10 issue mở gần đây nhất từ kho anthorpics/skills, bao gồm tiêu đề, tác giả, số lượng bình luận và nhãn.
query RecentIssues($owner: String!, $repo: String!, $limit: Int!) {
  repository(owner: $owner, name: $repo) {
    issues(first: $limit, states: [OPEN], orderBy: {field: CREATED_AT, direction: DESC}) {
      nodes {
        title
        author { login }
        comments { totalCount }
        labels(first: 5) { nodes { name } }
      }
    }
  }
}

Tham số:

{
  "service": "github",
  "query": "query RecentIssues($owner: String!, $repo: String!, $limit: Int!) { ... }",
  "variables": {
    "owner": "anthropics",
    "repo": "skills",
    "limit": 10
  }
}

4. Yêu cầu HTTP thô

Công cụ: data-fetching:raw-http
Trường hợp sử dụng: Các trường hợp đặc biệt không được bao gồm bởi các công cụ REST/GraphQL

Tham số:

Ví dụ: Gửi webhook với các tiêu đề tùy chỉnh

Sử dụng raw-http để POST đến https://hooks.slack.com/services/YOUR/WEBHOOK/URL với tải trọng JSON chứa {text: "Deployment complete"}, và tiêu đề tùy chỉnh X-Event: deployment-success.

Các kịch bản mạng nâng cao

Xử lý phân trang

Kỹ năng này tự động phát hiện các mẫu phân trang:

// Phân tích tiêu đề GitHub Link
const linkHeader = response.headers.get('Link');
if (linkHeader) {
  const nextUrl = parseLinkHeader(linkHeader).next;
  if (nextUrl && currentPage < maxPages) {
    return { 
      data: currentData, 
      nextPage: currentPage + 1,
      hasMore: true 
    };
  }
}

Yêu cầu tất cả các trang:

Sử dụng rest-get để tìm nạp tất cả các kho lưu trữ cho người dùng "anthropics", tự động xử lý phân trang cho đến khi không còn trang nào.

Kỹ năng này trả về một mảng phẳng của tất cả các kết quả.

Giới hạn tốc độ và logic thử lại

Cấu hình hành vi thử lại cho mỗi yêu cầu:

{
  "service": "github",
  "endpoint": "/rate_limit",
  "maxRetries": 5,
  "retryDelay": "exponential",
  "retryOn": [429, 500, 502, 503, 504]
}

Kỹ năng này triển khai thuật toán backoff lũy thừa với jitter:

const delay = Math.min(
  (2 ** attempt) * 1000 + Math.random() * 1000,
  30000
);
await new Promise(resolve => setTimeout(resolve, delay));

Quản lý yêu cầu đồng thời

Thực hiện hàng loạt các lệnh gọi API một cách hiệu quả:

Sử dụng rest-get để tìm nạp chi tiết cho các kho lưu trữ: ["claude", "skills", "anthropic-sdk"], thực thi các yêu cầu đồng thời với tối đa 3 kết nối song song.

Kỹ năng này sử dụng p-limit để điều tiết tính đồng thời:

import pLimit from 'p-limit';
const limit = pLimit(3); // Tối đa 3 đồng thời

const results = await Promise.all(
  repos.map(repo => 
    limit(() => fetchRepoDetails(repo))
  )
);

Chặn và giả lập yêu cầu

Để kiểm thử, chặn các yêu cầu mà không cần truy cập API thực:

// Trong cấu hình kỹ năng
"env": {
  "MOCK_MODE": "true",
  "MOCK_FIXTURES_DIR": "./test/fixtures"
}

Bây giờ các yêu cầu trả về dữ liệu giả lập từ các tệp JSON:

// test/fixtures/github/repos/anthropics.json
[
  {"name": "claude", "description": "Trợ lý AI", "stars": 5000}
]

Ứng dụng thực tế: Xây dựng Bảng điều khiển GitHub

Bước 1: Tìm nạp dữ liệu kho lưu trữ

Sử dụng rest-get để tìm nạp tất cả các kho lưu trữ từ GitHub cho tổ chức "anthropics", bao gồm mô tả đầy đủ, số sao, số fork và số lượng issue đang mở. Lưu kết quả vào bộ nhớ đệm trong 5 phút.

Bước 2: Làm phong phú dữ liệu với thông tin người đóng góp

Đối với mỗi kho lưu trữ, tìm nạp những người đóng góp hàng đầu:

Sử dụng rest-get để tìm nạp thống kê người đóng góp cho kho lưu trữ "anthropics/claude", giới hạn 10 người đóng góp hàng đầu và trích xuất thông tin đăng nhập và số lượng đóng góp.

Bước 3: Tạo thống kê tóm tắt

Kết hợp dữ liệu trong Claude Code:

const repos = await fetchAllRepos('anthropics');
const enrichedRepos = await Promise.all(
  repos.map(async (repo) => {
    const contributors = await fetchTopContributors('anthropics', repo.name);
    return { ...repo, topContributors: contributors };
  })
);

return {
  totalStars: enrichedRepos.reduce((sum, r) => sum + r.stars, 0),
  totalForks: enrichedRepos.reduce((sum, r) => sum + r.forks, 0),
  repositories: enrichedRepos
};

Bước 4: Xuất bản bảng điều khiển

Sử dụng rest-post để tạo một trang web GitHub Pages với dữ liệu bảng điều khiển bằng cách sử dụng GitHub API để commit vào nhánh gh-pages.

Xử lý lỗi và khả năng phục hồi

Kỹ năng này phân loại lỗi để xử lý thích hợp:

// Lỗi 4xx: Lỗi máy khách
if (response.status >= 400 && response.status < 500) {
  throw new SkillError('client_error', `Yêu cầu không hợp lệ: ${response.status}`, {
    statusCode: response.status,
    details: await response.text()
  });
}

// Lỗi 5xx: Lỗi máy chủ (có thể thử lại)
if (response.status >= 500) {
  throw new SkillError('server_error', `Lỗi máy chủ: ${response.status}`, {
    retryable: true,
    statusCode: response.status
  });
}

// Lỗi mạng: Lỗi kết nối
if (error.code === 'ECONNREFUSED' || error.code === 'ETIMEDOUT') {
  throw new SkillError('network_error', 'Mạng không thể truy cập', {
    retryable: true,
    originalError: error.message
  });
}

Claude Code nhận các lỗi có cấu trúc và có thể quyết định thử lại, hủy bỏ hoặc yêu cầu người dùng can thiệp.

Kết luận

Claude Code Skills dành cho mạng API biến các yêu cầu HTTP ngẫu hứng thành các công cụ tìm nạp dữ liệu đáng tin cậy, an toàn kiểu và có thể quan sát được. Bằng cách tập trung quản lý thông tin xác thực, triển khai các lần thử lại thông minh và cung cấp khả năng xử lý lỗi có cấu trúc, bạn loại bỏ các nguồn lỗi tích hợp API phổ biến nhất. Bắt đầu với bốn công cụ cốt lõi—rest-get, rest-post, graphql-query và raw-http—sau đó mở rộng chúng cho các trường hợp sử dụng cụ thể của bạn. Đầu tư vào cấu hình kỹ năng mang lại lợi ích ngay lập tức về tính nhất quán của mã và tốc độ phát triển.

Khi các kỹ năng tìm nạp dữ liệu của bạn tương tác với các API nội bộ, hãy xác thực các điểm cuối đó bằng Apidog để đảm bảo các tích hợp dựa trên AI của bạn sử dụng các hợp đồng đáng tin cậy.

button

Thực hành thiết kế API trong Apidog

Khám phá cách dễ dàng hơn để xây dựng và sử dụng API