mcpField
X
x-request

x-request

github.com/ant-designDevelopment4.8k85 installsUpdated 2d ago
Repository

About x-request

x-request is a skill for configuring XRequest from @ant-design/x-sdk to match streaming API needs. It covers request setup, authentication, error handling, and safer configuration across browser and Node.js environments.

Key features

  1. 01Configure XRequest requests
  2. 02Handle SSE and JSON responses
  3. 03Set authentication and headers
  4. 04Apply retry and error handling
  5. 05Review environment security

Use cases

  1. 01Test an API endpoint directly
  2. 02Configure a private API for a Provider
  3. 03Route browser requests through a proxy

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/ant-design/x --skill x-request

After installing, type/x-requestin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

reference/
API.md
CORE.md
EXAMPLES_SERVICE_PROVIDER.md

Details

From the project README

🎯 Skill Positioning

This skill focuses on solving: How to correctly configure XRequest to adapt to various streaming interface requirements.

Table of Contents

🚀 Quick Start

Dependency Management

📋 System Requirements
PackageVersion RequirementAuto InstallPurpose
@ant-design/x-sdk≥2.2.2✅Core SDK, includes XRequest tool
🛠️ One-click Installation
# Recommended to use tnpm
tnpm install @ant-design/x-sdk

# Or use npm
npm add @ant-design/x-sdk

# Check version
npm ls @ant-design/x-sdk

Basic Configuration

Simplest Usage
import { XRequest } from '@ant-design/x-sdk';

// Minimal configuration: only need to provide API URL
const request = XRequest('https://api.example.com/chat');

// For manual control (used in Provider scenarios)
const providerRequest = XRequest('https://api.example.com/chat', {
  manual: true, // Usually only this needs explicit configuration
});

💡 Tip: XRequest has built-in reasonable default configurations. In most cases, you only need to provide the API URL to use it.

📦 Technology Stack Overview

🏗️ Technology Stack Architecture

graph TD
    A[XRequest] --> B[Network Requests]
    A --> C[Authentication Management]
    A --> D[Error Handling]
    A --> E[Streaming Processing]
    B --> F[fetch Wrapper]
    C --> G[Token Management]
    D --> H[Retry Mechanism]
    E --> I[Server-Sent Events]

🔑 Core Concepts

ConceptRole PositioningCore ResponsibilitiesUsage Scenarios
XRequest🌐 Request ToolHandle all network communication, authentication, error handlingUnified request management
Global Config⚙️ Config CenterConfigure once, use everywhereReduce duplicate code
Streaming Config🔄 Streaming ProcessingSupport SSE and JSON response formatsAI conversation scenarios

🔧 Core Configuration Details

Core functionality reference content CORE.md

🛡️ Security Guide

Environment Security Configuration

🌍 Security Strategies for Different Environments
Runtime EnvironmentSecurity LevelConfiguration MethodRisk Description
Browser Frontend🔴 High Risk❌ Prohibit key configurationKeys will be directly exposed to users
Node.js Backend🟢 Safe✅ Environment variable configurationKeys stored on server side
Proxy Service🟢 Safe✅ Same-origin proxy forwardingKeys managed by proxy service
🔐 Authentication Methods Comparison
Authentication MethodApplicable EnvironmentConfiguration ExampleSecurity
Bearer TokenNode.jsBearer ${process.env.API_KEY}✅ Safe
API Key HeaderNode.jsX-API-Key: ${process.env.KEY}✅ Safe
Proxy ForwardingBrowser/api/proxy/service✅ Safe
Direct ConfigurationBrowserBearer sk-xxx❌ Dangerous

🔍 Debugging and Testing

Debug Configuration

🛠️ Debug Templates

Node.js Debug Configuration:

// Safe debug configuration (Node.js environment)
const debugRequest = XRequest('https://your-api.com/chat', {
  headers: {
    Authorization: `Bearer ${process.env.DEBUG_API_KEY}`,
  },
  params: { query: 'test message' },
});

Frontend Debug Configuration:

// Safe debug configuration (frontend environment)
const debugRequest = XRequest('/api/debug/chat', {
  params: { query: 'test message' },
});

Configuration Validation

✅ Security Check Tools
// Security configuration validation function
const validateSecurity = (config: any) => {
  const isBrowser = typeof window !== 'undefined';
  const hasAuth = config.headers?.Authorization || config.headers?.authorization;

  if (isBrowser && hasAuth) {
    throw new Error(
      '❌ Frontend environment prohibits Authorization configuration, risk of key leakage!',
    );
  }

  console.log('✅ Security configuration check passed');
  return true;
};

// Usage example
validateSecurity({
  headers: {
    // Do not include Authorization
  },
});

📋 Usage Scenarios

Standalone Usage

🎯 Direct Request Initiation
import { XRequest } from '@ant-design/x-sdk';

// Test interface availability
const testRequest = XRequest('https://httpbin.org/post', {
  params: { test: 'data' },
});

// Send request immediately
const response = await testRequest();
console.log(response);

Integration with Other Skills

🔄 Skill Collaboration Workflow
graph TD
    A[x-request] -->|Configure Request| B[x-chat-provider]
    A -->|Configure Request| C[use-x-chat]
    B -->|Provide Provider| C
    A --> D[Direct Request]
Usage MethodCooperating SkillPurposeExample
StandaloneNoneDirect network request initiationTest interface availability
With x-chat-providerx-chat-providerConfigure requests for custom ProviderConfigure private API
With use-x-chatuse-x-chatConfigure requests for built-in ProviderConfigure OpenAI API
Complete AI Applicationx-request → x-chat-provider → use-x-chatConfigure requests for entire systemComplete AI conversation application
⚠️ useXChat Integration Security Warning

Important Warning: useXChat is only for frontend environments, XRequest configuration must not contain Authorization!

❌ Incorrect Configuration (Dangerous):

// Extremely dangerous: keys will be directly exposed to browser
const unsafeRequest = XRequest('https://api.openai.com/v1/chat/completions', {
  headers: {
    Authorization: 'Bearer sk-xxxxxxxxxxxxxx', // ❌ Dangerous!
  },
  manual: true,
});

✅ Correct Configuration (Safe):

// Frontend security configuration: use proxy service
const safeRequest = XRequest('/api/proxy/openai', {
  params: {
    model: 'gpt-3.5-turbo',
    stream: true,
  },
  manual: true,
});

🚨 Development Rules

Test Case Rules

  • If the user does not explicitly need test cases, do not add test files
  • Only create test cases when the user explicitly requests them

Code Quality Rules

  • After completion, must check types: Run tsc --noEmit to ensure no type errors
  • Keep code clean: Remove all unused variables and imports

✅ Configuration Checklist

Before using XRequest, please confirm the following configurations are correctly set:

🔍 Configuration Checklist
Check ItemStatusDescription
API URL✅ Must ConfigureXRequest('https://api.xxx.com')
Auth Info⚠️ Environment RelatedFrontend❌Prohibited, Node.js✅Available
manual Config✅ Provider ScenarioIn Provider needs to be set to true, other scenarios need to be set according to actual situation
Other Config❌ No Need to ConfigureBuilt-in reasonable default values
Interface Availability✅ Recommended TestVerify with debug configuration
🛠️ Quick Verification Script
// Check configuration before running
const checkConfig = () => {
  const checks = [
    {
      name: 'Global Configuration',
      test: () => {
        // Check if global configuration has been set
        return true; // Check according to actual situation
      },
    },
    {
      name: 'Security Configuration',
      test: () => validateSecurity(globalConfig),
    },
    {
      name: 'Type Check',
      test: () => {
        // Run tsc --noEmit
        return true;
      },
    },
  ];

  checks.forEach((check) => {
    console.log(`${check.name}: ${check.test() ? '✅' : '❌'}`);
  });
};

🎯 Skill Collaboration

graph LR
    A[x-request] -->|Configure Request| B[x-chat-provider]
    A -->|Configure Request| C[use-x-chat]
    B -->|Provide Provider| C
📊 Skill Usage Comparison Table
Usage ScenarioRequired SkillsUsage OrderCompletion Time
Test Interfacex-requestDirect Use2 minutes
Private API Adaptationx-request → x-chat-providerConfigure request first, then create Provider10 minutes
Standard AI Applicationx-request → use-x-chatConfigure request first, then build interface15 minutes
Complete Customizationx-request → x-chat-provider → use-x-chatComplete workflow30 minutes

🔗 Reference Resources

📚 Core Reference Documentation

🌐 SDK Official Documentation

💻 Example Code

Comments

Markdown supported