跳到主要内容

SDK 客户端

SDK 客户端提供了与 @blocklet/js-sdk 交互的主要入口点。它提供了一个主要的 BlockletSDK 类,该类捆绑了所有可用的服务,以及几个工厂函数(getBlockletSDK、createAxios、createFetch),以便于访问和实例化。

SDK 客户端提供了与 @blocklet/js-sdk 交互的主要入口点。它提供了一个主要的 BlockletSDK 类,该类捆绑了所有可用的服务,以及几个工厂函数(getBlockletSDKcreateAxioscreateFetch),以便于访问和实例化。

本节提供了这些核心组件的详细参考。有关实际示例,请参阅发出 API 请求指南。

SDK Client

BlockletSDK 类

BlockletSDK 类是一个容器,它持有所有不同服务的实例,为 SDK 的功能提供了一个单一的访问点。

虽然您可以直接实例化它,但推荐的获取实例的方法是通过 getBlockletSDK() 工厂函数,这能确保在您的整个应用程序中只有一个共享的实例。

属性

以下服务可作为 BlockletSDK 实例的属性使用:

属性服务描述
userAuthService管理用户个人资料、设置和身份验证操作。
userSessionUserSessionService获取并管理跨设备的用户登录会话。
tokenTokenService用于管理会话和刷新令牌的低级服务。
blockletBlockletService获取并加载 blocklet 元数据。
federatedFederatedService与联合登录组设置进行交互。
apiAxios已弃用。 一个 Axios 实例。请改用 createAxios()

工厂函数

这些辅助函数为创建 SDK 客户端和 HTTP 请求处理程序提供了便捷的方法。

getBlockletSDK()

getBlockletSDK()

此函数返回 BlockletSDK 类的单例实例。使用单例可确保应用程序的所有部分共享相同的 SDK 状态,包括令牌信息和服务配置。

返回

一个 BlockletSDK 单例实例。

使用 getBlockletSDK

javascript
import { getBlockletSDK } from '@blocklet/js-sdk';

const sdk = getBlockletSDK();

async function fetchUserProfile() {
  try {
    const profile = await sdk.user.getProfile();
    console.log('User Profile:', profile);
  } catch (error) {
    console.error('Failed to fetch profile:', error);
  }
}

fetchUserProfile();

createAxios()

createAxios(config, requestParams)

这是用于创建预配置 Axios 实例的推荐工厂函数。该实例会自动处理向传出请求添加授权标头,并在会话令牌过期时刷新它。

参数

  • config AxiosRequestConfig — 可选。一个标准的 Axios 配置对象。任何有效的 Axios 选项都可以传递到这里。
  • requestParams RequestParams — 可选。用于 SDK 特定请求处理的附加参数。

返回

一个配置了用于自动令牌管理的拦截器的 Axios 实例。

创建一个 Axios 客户端

javascript
import { createAxios } from '@blocklet/js-sdk';

// 使用基础 URL 创建一个 API 客户端
const apiClient = createAxios({
  baseURL: '/api/v1',
});

async function getItems() {
  try {
    // Authorization 标头会自动添加
    const response = await apiClient.get('/items');
    return response.data;
  } catch (error) {
    console.error('Error fetching items:', error);
    throw error;
  }
}

createFetch()

createFetch(options, requestParams)

对于喜欢原生 Fetch API 的开发者,此函数返回一个包装的 fetch 函数,该函数提供与 createAxios 相同的自动令牌管理功能。

参数

  • options RequestInit — 可选。Fetch API 的默认选项,例如标头,如标准 RequestInit 类型中定义。
  • requestParams RequestParams — 可选。用于 SDK 特定请求处理的附加参数。

返回

一个自动处理身份验证的与 fetch 兼容的函数。

创建一个 Fetch 客户端

javascript
import { createFetch } from '@blocklet/js-sdk';

// 创建一个带有默认 JSON 标头的 fetcher
const apiFetcher = createFetch({
  headers: {
    'Content-Type': 'application/json',
  },
});

async function postItem(item) {
  try {
    const response = await apiFetcher('/api/v1/items', {
      method: 'POST',
      body: JSON.stringify(item),
    });

    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }

    return await response.json();
  } catch (error) {
    console.error('Error posting item:', error);
    throw error;
  }
}

SDK 客户端初始化后,您现在可以探索它提供的各种服务,以便与 Blocklet 生态系统进行交互。