客户端SDK
最后更新于
sdk
└─ ts-client
├─ claims.ts
├─ client.ts
├─ index.ts # 入口文件,暴露 client
└─ models.ts # 结构体定义import { client } from "./ts-client"import { createClient } from './client';
export const client = createClient({
// 如果需要修改访问域名,可以在这里配置
baseURL: 'https://my-custom-base-url.com',
});npm i node-fetchimport fetch from 'node-fetch';
const client = createClient({
customFetch: fetch,
});const client = createClient({
extraHeaders: {
customHeader: 'value',
},
});
// or
client.setExtraHeaders({
customHeader: 'value',
});const response = await client.query({
operationName: 'Hello',
input: {
hello: 'World',
},
});const response = await client.mutate({
operationName: 'SetName',
input: {
name: 'fireboom',
},
});client.subscribe(
{
operationName: 'Hello',
input: {
name: 'World',
},
liveQuery: true, // 开启实时查询
},
(response) => {}
);client.subscribe(
{
operationName: 'Countdown',
input: {
from: 100,
},
},
(response) => {}
);const response = await client.subscribe(
{
operationName: 'Countdown',
input: {
from: 100,
},
subscribeOnce: true,
},
(response) => {}
);async function handleFiles(e: Event) {
const files = (e.target as HTMLInputElement)?.files;
if (files == null) return
// 调用上传函数
const res = await client.uploadFiles({
provider: "tengxunyun",
files: files,
profile: "avatar" // (可选)
})
console.log("https://test-1314985928.cos.ap-nanjing.myqcloud.com/"+res.fileKeys[0])
}client.login('auth0');const user = await client.fetchUser();client.logout({
logoutOpenidConnectProvider: true,
});export const client = createClient({
extraHeaders: {
// 这里注入请求头
Authorization: 'Bearer <access_token>',
},
})const controller = new AbortController();
const { fileKeys } = await client.uploadFiles({
abortSignal: abortController.signal,
provider: S3Provider.minio,
files,
});
// cancel the request
controller.abort();# statusCode=400
{
"code": "InputValidationError",
"message": "Bad Request: Invalid input",
"input": {
"id": 11
},
"errors": [
{
"propertyPath": "/id",
"invalidValue": 11,
"message": "must be less than or equal to 10"
}
]
}# statusCode=200
{
"errors": [
{
"message": "Error in connector: Error creating a database connection. (Error creating a database connection.)",
"locations": null,
"path": null
}
],
"data": {
"rb_findUniqueT": null
}
}# statusCode=200
{
"errors": [
{
"message": "Error occurred during query execution:\nConnectorError(ConnectorError { user_facing_error: Some(KnownError { message: \"Unique constraint failed on the constraint: `PRIMARY`\", meta: Object {\"target\": String(\"PRIMARY\")}, error_code: \"P2002\" }), kind: UniqueConstraintViolation { constraint: Index(\"PRIMARY\") } })",
"locations": null,
"path": null
}
],
"data": {
"rb_createOneT": null
}
}import {GraphQLResponseError,ResponseError,InputValidationError} from "fireboom-wundersdk/client";
const { data, error } = await client.query({
operationName: 'Hello',
input: {
hello: 'World',
},
});
console.log(data)
if (error != undefined) {
if (error instanceof InputValidationError) {
// 1,处理入参校验错误
console.log("meet InputValidationError:", error.message)
} else if (error instanceof GraphQLResponseError) {
// 2,处理执行OPERATION错误
console.log("meet GraphQLResponseError:", error.errors[0].location)
} else if (error instanceof ResponseError) {
// 3,处理其他错误
console.log("meet ResponseError:", error.statusCode)
} else {
console.log("meet UnknownError:" , JSON.stringify(error))
}
}