bw-mini-app/src/sdk
imeepos 595e56378c fix(cors): 修复H5环境下的CORS上传问题
- 在config/dev.ts中添加代理配置,将/api/*请求代理到外部API服务器
- 在bowongAISDK.ts中添加平台检测逻辑,H5环境使用fetch避免CORS
- 新增H5专用的文件上传和图像生成方法
- 保持小程序环境使用原有的Taro.uploadFile方法
- 确保跨平台兼容性,解决XMLHttpRequest凭据模式与通配符CORS头冲突

修复错误:
- Access-Control-Allow-Origin头在凭据模式下不能使用通配符*
- H5环境下uploadFile自动设置withCredentials导致的CORS阻止
2025-09-26 23:03:52 +08:00
..
README.md feat: 美化home页面布局,突出图片展示并优化文字布局 2025-09-03 18:57:42 +08:00
bowongAISDK.ts fix(cors): 修复H5环境下的CORS上传问题 2025-09-26 23:03:52 +08:00
prompt.md fix: 优化首页审核功能的类型安全和错误处理 2025-09-08 16:22:45 +08:00
sdk-server.ts feat(sdk): 根据API文档全面升级sdk-server.ts 2025-09-26 22:46:47 +08:00
types.ts fix: 修改图标颜色 2025-09-04 20:26:08 +08:00

README.md

SDK Server 使用文档

概述

SDK Server 是一个用于与后端模板服务进行通信的客户端SDK基于提供的NestJS控制器API设计。

后端API接口

基于以下NestJS控制器

@Controller() 
export class AppController { 
  @Get() 
  async getTemplates() // 获取所有模板
  
  @Get(':templateCode') 
  async getTemplate(@Param('templateCode') templateCode: string) // 获取单个模板
  
  @Post() 
  async executeTemplate(@Body('imageUrl') imageUrl: string, @Body('templateCode') templateCode: string) // 执行模板
}

快速开始

1. 基础使用

import { bowongAI } from '../sdk';

// 获取所有模板
const templates = await bowongAI.getAllTemplates();

// 获取单个模板
const template = await bowongAI.getTemplate('1');

// 执行模板处理
const result = await bowongAI.executeTemplate('1', 'https://example.com/image.jpg');

2. 使用独立的SDK Server

import { SdkServer } from '../sdk/sdk-server';

const server = new SdkServer('http://localhost:3000');

// 获取模板列表
const templates = await server.getAllTemplates();

// 执行模板
const result = await server.executeTemplate({
  templateCode: '1',
  imageUrl: 'https://example.com/image.jpg'
});

3. 配置自定义服务器

import { BowongAISDK } from '../sdk';

// 使用自定义模板服务器URL
const sdk = new BowongAISDK('http://your-template-server.com');

const templates = await sdk.getAllTemplates();

API 方法

getAllTemplates()

获取所有可用的模板列表。

返回值: Promise<Template[]>

getTemplate(templateCode: string)

根据模板代码获取单个模板信息。

参数:

  • templateCode: 模板代码

返回值: Promise<Template | null>

executeTemplate(templateCode: string, imageUrl: string)

执行指定模板的图像处理。

参数:

  • templateCode: 模板代码
  • imageUrl: 要处理的图像URL

返回值: Promise<ExecuteTemplateResult>

getTemplatesByCodes(templateCodes: string[])

批量获取指定的模板。

参数:

  • templateCodes: 模板代码数组

返回值: Promise<Template[]>

checkTemplateServerConnection()

检查模板服务器的连接状态。

返回值: Promise<boolean>

数据类型

Template

interface Template {
  code: string;           // 模板唯一标识码
  name: string;           // 模板名称
  description: string;    // 模板详细描述
  creditCost: number;     // 积分消耗
  version: string;        // 版本号
  input: string;          // 原始图片
  output: string;         // 输出图片
  tags: string[];         // 标签数组
}

ExecuteTemplateResult

interface ExecuteTemplateResult {
  result: string | null;  // 执行结果
  success: boolean;       // 是否成功
  message: string;        // 状态消息
}

ApiResponse (后端响应格式)

interface ApiResponse<T = any> {
  status: boolean | string;  // 响应状态
  data: T;                  // 响应数据
  msg: string;              // 响应消息
}

配置

环境配置

sdk-server-config.ts 中配置不同环境的服务器地址:

// 开发环境
export const DEV_CONFIG = {
  baseUrl: 'http://localhost:3000',
  timeout: 30000,
};

// 生产环境
export const PROD_CONFIG = {
  baseUrl: 'https://api.your-domain.com',
  timeout: 30000,
};

错误处理

try {
  const templates = await bowongAI.getAllTemplates();
} catch (error) {
  console.error('获取模板失败:', error);
  // 处理错误
}

示例

查看 sdk-server-example.ts 文件获取完整的使用示例。

注意事项

  1. 确保后端服务器已启动并可访问
  2. 检查网络连接和服务器地址配置
  3. 处理可能的网络错误和超时
  4. 在生产环境中使用正确的服务器地址