REST Client Generator Skill
REST API クライアントコードを生成するスキルです。
主な機能
-
Axios クライアント: JavaScript/TypeScript
-
Fetch API: モダンJavaScript
-
Requests: Python
-
HTTPClient: Java
Axios (TypeScript)
import axios, { AxiosInstance } from 'axios';
class UserAPI { private client: AxiosInstance;
constructor(baseURL: string) { this.client = axios.create({ baseURL, timeout: 5000, headers: { 'Content-Type': 'application/json' } });
this.setupInterceptors();
}
private setupInterceptors() {
this.client.interceptors.request.use(
(config) => {
const token = localStorage.getItem('token');
if (token) {
config.headers.Authorization = Bearer ${token};
}
return config;
}
);
this.client.interceptors.response.use(
(response) => response,
(error) => {
if (error.response?.status === 401) {
// Handle unauthorized
}
return Promise.reject(error);
}
);
}
async getUsers(): Promise<User[]> { const { data } = await this.client.get('/users'); return data; }
async createUser(user: CreateUserDTO): Promise<User> { const { data } = await this.client.post('/users', user); return data; }
async updateUser(id: string, user: UpdateUserDTO): Promise<User> {
const { data } = await this.client.put(/users/${id}, user);
return data;
}
async deleteUser(id: string): Promise<void> {
await this.client.delete(/users/${id});
}
}
export const userAPI = new UserAPI('https://api.example.com');
Python (requests)
import requests from typing import List, Optional
class UserAPI: def init(self, base_url: str, api_key: str): self.base_url = base_url self.session = requests.Session() self.session.headers.update({ 'Authorization': f'Bearer {api_key}', 'Content-Type': 'application/json' })
def get_users(self) -> List[dict]:
response = self.session.get(f'{self.base_url}/users')
response.raise_for_status()
return response.json()
def create_user(self, user_data: dict) -> dict:
response = self.session.post(
f'{self.base_url}/users',
json=user_data
)
response.raise_for_status()
return response.json()
def update_user(self, user_id: str, user_data: dict) -> dict:
response = self.session.put(
f'{self.base_url}/users/{user_id}',
json=user_data
)
response.raise_for_status()
return response.json()
def delete_user(self, user_id: str) -> None:
response = self.session.delete(f'{self.base_url}/users/{user_id}')
response.raise_for_status()
バージョン情報
- Version: 1.0.0