mirror of
https://github.com/zuiidea/antd-admin
synced 2026-10-30 13:23:49 +00:00
* refactor(api): introduce defineApi + axios request layer Replace ad-hoc fetch httpClient with api/request.ts (axios interceptors, envelope unwrap, auth refresh) and defineApi-based resource modules. Move session hydration into api/auth, sync both templates, and update docs. Co-authored-by: zuiidea <zuiiidea@gmail.com> * chore: unify Cursor rules, fix monorepo install hooks, refresh basic docs Add root preinstall to set githooks and disable parallel vp config git lock races; merge per-app Cursor thin rules into app.mdx; keep template READMEs free of monorepo-only paths and describe basic as default English rather than English-only. Co-authored-by: Cursor <cursoragent@cursor.com> * chore: add root turbo fmt and format app sources Expose fmt via turbo at the monorepo root, apply Oxfmt in basic/with-lingui, and run vp staged through pnpm exec in pre-commit so hooks work without a global vp. Co-authored-by: Cursor <cursoragent@cursor.com> * chore: drop root eslint/prettier and bump turbo to 2.11.9 Root formatting and lint stay on turbo fmt/lint via Vite+ in workspace apps. Co-authored-by: Cursor <cursoragent@cursor.com> * chore: consolidate agent guidance into AGENTS.md Merge scoped instructions into per-app AGENTS.md, add monorepo AGENTS.md and add-resource skill, and remove template .github Copilot files plus the Cursor app router rule. Co-authored-by: Cursor <cursoragent@cursor.com> * chore(basic): add add-resource skill and portable app-root paths Align basic with with-lingui for CRUD scaffolding via AGENTS.md and .agents/skills, and drop hardcoded monorepo paths in agent docs. Co-authored-by: Cursor <cursoragent@cursor.com> * refactor(api): split modules under shared/ with API_PREFIX Move auth and users into folder modules, centralize path constants, and align MSW with endpoint paths in both template apps. Co-authored-by: Cursor <cursoragent@cursor.com> * docs: document modular API layer in README files Expand template READMEs with src/api layout, fix CLI table and E2E script references. Co-authored-by: Cursor <cursoragent@cursor.com> * docs: align site with modular src/api layout Document API_PREFIX, folder structure, templates, and E2E script usage in en/zh. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: zuiidea <zuiidea@example.com>
37 lines
1.8 KiB
Plaintext
37 lines
1.8 KiB
Plaintext
---
|
|
title: Proxying API Requests
|
|
description: MSW, API base URL, and wiring a real backend
|
|
---
|
|
|
|
# Proxying API Requests
|
|
|
|
## MSW (default in development)
|
|
|
|
Templates use **MSW** to intercept HTTP in development. Handlers live under `src/mocks/handlers`. You can demo login, menus, and user CRUD without a real backend.
|
|
|
|
The **worker directory** is configured via `package.json` **`msw.workerDirectory`** as `public`.
|
|
|
|
## API layer (templates)
|
|
|
|
Data flow: **Zod schemas → `defineApi` in `src/api/<module>/index.ts` → routes/components call resource functions** (`listUsers`, `login`, …). Do not import axios or `@/api/request` from UI code.
|
|
|
|
```text
|
|
src/api/
|
|
├── request.ts # axios, envelope unwrap, token refresh
|
|
├── schemas.ts # deprecated barrel; prefer @/api/shared and module schemas
|
|
├── shared/ # API_PREFIX, pagination, params, menu helpers
|
|
├── auth/ # paths, schemas, login / hydrateSession
|
|
└── users/ # schemas, CRUD APIs, userQueryKeys, path constants
|
|
```
|
|
|
|
- REST path prefix: **`API_PREFIX`** in `src/api/shared/prefix.ts` (default `/api`). Auth and user paths (`AUTH_ENDPOINTS`, `USERS_PATH`) and **MSW handlers** import the same constants.
|
|
- New domains: mirror **`users`** — see each app **`.agents/skills/add-resource/SKILL.md`** and **`AGENTS.md`**.
|
|
|
|
## Talking to a real API
|
|
|
|
Transport lives in **`src/api/request.ts` (axios)**. `baseURL` comes from **`VITE_API_BASE_URL`** (`src/utils/constants.ts`). Call **`defineApi` exports** from `src/api/<module>/index.ts` — not axios from pages.
|
|
|
|
Point `VITE_API_BASE_URL` at your gateway and disable or bypass MSW per `main.tsx` / env flags when you no longer need mocks.
|
|
|
|
For CORS, configure the gateway the browser can reach, or proxy **`API_PREFIX`** (default `/api`) in `vite.config.ts` `server.proxy`.
|