@djangocfg/api

中文文档
2.1.655发布于 2026/11/12MITTypeScriptESM + CJS零依赖近 30 天下载 1.9万

自动生成 TypeScript API 客户端,带有 React shooks, SWR 集成和 Zod 验证 Django REST 框架后端

中文使用文档
文档目录15 节
  1. 安装
  2. 条目点
  3. 生成的 API 类
  4. Auth 模块
  5. Auth 钩子
  6. 警卫解决者
  7. 单一登录主机
  8. 存储密钥
  9. 托肯存储
  10. 日志——意识到角色的动词
  11. 信封旗帜
  12. 类型命名空间
  13. 服务器中端软件
  14. 环境
  15. 再生成客户端

翻译:

DjangoCFG应用程序的Type-seafe API客户端和认证系统.

安装

pnpm add @djangocfg/api

条目点

条目导入说明
主要@djangocfg/apiAPI 类、类型、取取器、计划
认证@djangocfg/api/auth认证提供者、钩子、公用事业
Auth 服务器@djangocfg/api/auth/serverNext.js 代理中间软件
存储@djangocfg/api/storageCookie/ storage 密钥; 单签入帮助器(safeNext, (中文(简体) ), deriveAuthHost, (中文(简体) ), buildSsoLoginUrl(中文(简体) )
客户@djangocfg/api/clients预配置的 API 实例

生成的 API 类

每个 OpenAPI 标记一个类 。 直接导入并调用静态方法 :

import {
  CfgAccounts,          // OTP login
  CfgAccountsProfile,   // Profile CRUD
  CfgAccountsOauth,     // GitHub OAuth
  CfgAccountsAuth,      // Token refresh
  CfgAccountsApiKey,    // API key management
  CfgTotp,              // TOTP devices / disable
  CfgTotpSetup,         // TOTP setup / confirm
  CfgTotpVerify,        // TOTP verify / backup
  CfgTotpBackupCodes,   // Backup codes
} from '@djangocfg/api';

// OTP login
const result = await CfgAccounts.cfgAccountsOtpVerifyCreate({
  body: { identifier, otp },
});

// Profile
const profile = await CfgAccountsProfile.cfgAccountsProfileRetrieve();

// Token refresh
const tokens = await CfgAccountsAuth.cfgAccountsTokenRefreshCreate({
  body: { refresh },
});

Auth 模块

import { AuthProvider, useAuth } from '@djangocfg/api/auth';

// Provider
<AuthProvider config={{ routes: { auth: '/auth', defaultCallback: '/private' } }}>
  {children}
</AuthProvider>

// Hook
const { user, isAuthenticated, requestOTP, verifyOTP, logout } = useAuth();

Auth 钩子

import {
  useAuth,              // Main auth context
  useAuthGuard,         // Route protection
  useAuthForm,          // OTP form state machine
  useOAuthLogin,        // GitHub / Google OAuth
  useOAuthProviders,    // providers enabled on the server
  useTwoFactor,         // 2FA verification
  useTwoFactorSetup,    // 2FA setup flow
  useTwoFactorStatus,   // 2FA status / disable
  useDeleteAccount,     // Account deletion
} from '@djangocfg/api/auth';

警卫解决者

"spinner vs referred vs compare"的决定是纯的,可以单独检验的. useAuthGuard (和 @djangocfg/layouts' PrivateLayout只是电线反应状态 纳入这些:

import {
  resolveGuardIsLoading,      // show the preloader?
  shouldRedirectToAuth,       // no session → send to the auth form
  isForbidden,                // signed in, but lacks the required privilege
  resolveGuardIsAuthenticated,
  type GuardInput,
} from '@djangocfg/api/auth';

GuardInput 角色门可选两个字段 : requireStaff (单位:千美元) 路线需要工作人员/管理人员)和 isAdminUser (从) useAuth() - 那个 is_staff || is_superuser 折,从来一旗.

isForbidden 是故意的,这是故意的 没有 重定向条件:会话为 有效, 因此认证形式无法修正, 重定向会循环保存的 URL (中文(简体) ). 换成一个不同的"未经授权"状态. resolveGuardIsLoading 返回时 false 曾经禁止,所以预装机 从来没有旋转它.

单一登录主机

<AuthProvider config={{ sso: true }}> (或 BaseApp auth={{ sso: true }}制造( ) auth.<apex> 唯一的登录页面 每个子域: 追随者以 ?next=<url> 他们将被派去教化众人 他们。 会话是共享的 cookie 组合在 .<apex>关闭,除非启动,并关闭 localhost (一个控制台线). 中间软件和客户端的纯助手在其中 @djangocfg/api/storage数字 : safeNext (唯一的大门用于 next, (中文(简体) ), deriveAuthHost, (中文(简体) ), resolveSso, (中文(简体) ), buildSsoLoginUrl。 。 。 . useAuth().sso 报告情况。 细节 : @docs/AUTHENTICATION.md。 。 。 .

存储密钥

每个浏览器存储键是 cfg.<area>.<name> (框架)或 <owner>.<area>.<name> (应用). 使用注册簿, 绝不是字面或生字 localStorage数字 :

import { CFG_KEYS, cfgStorage, createStorage } from '@djangocfg/api/storage';

cfgStorage.read(CFG_KEYS.email.key);
cfgStorage.clearAll(); // sign-out: removes personal keys

const storage = createStorage('kino');
storage.writeJSON(storage.key('player', 'volume'), 0.4);

旧密钥名称没有迁移 。 完整的规则,关键列表和交叉tabab行为: @docs/STORAGE_KEYS.md。 。 。 .

托肯存储

代号活在共享中 auth 存储( 默认本地Storage, 可切换) 饼干:

import { auth } from '@djangocfg/api';

auth.getToken();              // current access token
auth.setStorageMode('cookie'); // SSR-readable cookie instead of localStorage

日志——意识到角色的动词

全体 @djangocfg/* consola loggers 读取了一个全局运行时级别, 所以控制台 对终端用户来说是干净的,对管理员/devs来说是动词——如大型SaaS应用.

import { applyRoleLogPolicy, setLogLevel } from '@djangocfg/api';

// Usually automatic: AuthProvider calls this on login/logout.
// admin (is_staff/is_superuser) or dev → debug; prod regular user → errors only.
applyRoleLogPolicy({ isAdmin: user?.is_staff || user?.is_superuser });

// Manual override (0 silent · 1 error · 2 warn · 3 info · 4 debug · 5 trace):
setLogLevel(0);

错误仍然流到 @djangocfg/devtools 无论控制台级别如何,所以 事件仍然不可诊断.

信封旗帜

@djangocfg/api 是最小的共享软件包,所以 env 旗帜住在这里( 单 真相来源:

import { isDev, isProd, isBrowser, isStaticBuild } from '@djangocfg/api';

类型命名空间

import type { AccountsTypes, TotpTypes } from '@djangocfg/api';

type User = AccountsTypes.User;
type Device = TotpTypes.TotpDevice;

服务器中端软件

// middleware.ts
import { proxyMiddleware } from '@djangocfg/api/auth/server';

export function middleware(request: NextRequest) {
  return proxyMiddleware(request);
}

export const config = {
  matcher: ['/media/:path*', '/api/:path*'],
};

环境

NEXT_PUBLIC_API_URL=http://localhost:8000

再生成客户端

# From django solution directory
make api

版本与发布记录

@djangocfg/api 共发布 672 个版本,首次发布于 2025/10/13;过去 12 个月发布了 630 个版本。

版本发布日期距今
2.1.655latest2026/11/12今天
2.1.6532026/11/12今天
2.1.6522026/11/11今天
2.1.6512026/11/111 天前
2.1.6502026/11/111 天前
2.1.6482026/11/111 天前

关于 @djangocfg/api 的常见问题

@djangocfg/api 是什么?

自动生成 TypeScript API 客户端,带有 React shooks, SWR 集成和 Zod 验证 Django REST 框架后端

如何安装 @djangocfg/api?

在项目目录运行 npm install @djangocfg/api,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:swr(^2.3.7)、zod(^4.3.6)、next(^16.4.5)、react(^19.0.0)、consola(^3.4.2)、p-retry(^7.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@djangocfg/api 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@djangocfg/api 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@djangocfg/api 可以商用吗?

@djangocfg/api 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@djangocfg/api 的下载量有多少?

根据 npm 官方下载统计,@djangocfg/api 在 2026/10/13 – 2026/11/11 这 30 天内被下载 18,939 次,日均约 631 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@djangocfg/api 还在维护吗?

最新版本 2.1.655 发布于 2026/11/12(今天);至今共发布 672 个版本,其中过去 12 个月发布了 630 个;首次发布于 2025/10/13。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。