代码示例
各种编程语言的完整代码示例和最佳实践
本页面提供了各种编程语言调用小红书内容发布 API 的详细代码示例。 所有示例都包含了错误处理、重试机制等最佳实践,可以直接在你的项目中使用。
错误处理
始终检查 API 响应中的 success 字段,并适当处理错误情况
重试机制
对于临时性错误(如网络问题),建议实现重试机制
资源 URL 建议
使用 HTTPS 协议的 URL,确保图片和视频资源可公开访问
内容优化
标题简洁明了,内容丰富有趣,图片清晰美观
编程语言示例
完整代码示例
const axios = require('axios');
// 配置信息
const API_BASE_URL = 'https://yourdomain.com';
const API_KEY = 'your_api_key_here';
// 创建 HTTP 客户端
const apiClient = axios.create({
baseURL: API_BASE_URL,
headers: {
'Content-Type': 'application/json'
}
});
// 发布图文内容
async function publishImageNote(title, content, images) {
try {
const response = await apiClient.post('/api/rednote/publish', {
api_key: API_KEY,
type: 'normal',
title: title,
content: content,
images: images
});
console.log('发布成功:', response.data);
return response.data;
} catch (error) {
console.error('发布失败:', error.response?.data || error.message);
throw error;
}
}
// 发布视频内容
async function publishVideoNote(title, content, videoUrl, coverUrl) {
try {
const response = await apiClient.post('/api/rednote/publish', {
api_key: API_KEY,
type: 'video',
title: title,
content: content,
video: videoUrl,
cover: coverUrl
});
console.log('发布成功:', response.data);
return response.data;
} catch (error) {
console.error('发布失败:', error.response?.data || error.message);
throw error;
}
}
// 使用示例
async function main() {
try {
// 发布图文
const imageResult = await publishImageNote(
'美食分享',
'今天做了超好吃的蛋糕\n#美食 #烘焙',
[
'https://example.com/cake1.jpg',
'https://example.com/cake2.jpg'
]
);
console.log('图文二维码:', imageResult.data.qrcode);
// 发布视频
const videoResult = await publishVideoNote(
'旅行日记',
'美丽的海边风景\n#旅行 #海景',
'https://example.com/travel.mp4',
'https://example.com/travel-cover.jpg'
);
console.log('视频二维码:', videoResult.data.qrcode);
} catch (error) {
console.error('操作失败:', error);
}
}
main();错误处理最佳实践
统一错误处理
JavaScript 示例
function handleApiError(error) {
if (error.response) {
const { status, data } = error.response;
switch (status) {
case 401:
return '请检查 API Key 是否正确或已过期';
case 402:
return '调用次数不足,请前往用户中心充值';
case 400:
return `参数错误:${data.error?.message || '请检查请求参数'}`;
case 429:
return '请求过于频繁,请稍后重试';
case 500:
return '服务器临时错误,请稍后重试';
default:
return `请求失败:${data.error?.message || '未知错误'}`;
}
} else {
return `网络错误:${error.message}`;
}
}重试策略
重试机制示例
async function publishWithRetry(data, maxRetries = 3) {
const retryableErrors = [429, 500, 502, 503, 504];
for (let attempt = 1; attempt <= maxRetries; attempt++) {
try {
return await publishToXiaohongshu(data);
} catch (error) {
const shouldRetry = error.response &&
retryableErrors.includes(error.response.status);
if (shouldRetry && attempt < maxRetries) {
const delay = Math.min(1000 * Math.pow(2, attempt - 1), 10000);
console.log(`重试第 ${attempt} 次,${delay}ms 后重试...`);
await new Promise(resolve => setTimeout(resolve, delay));
} else {
throw error;
}
}
}
}