api-frontend-integration

A set of project rules for connecting an Angular frontend to a Java backend. It defines how lists, errors, and asynchronous data are represented between the two sides.

In plain words
What is it for?
Use it when wiring Angular services to backend APIs, reading collection responses, handling standardized failures, and working with RxJS Observable data streams.
Why use it?
It prevents common integration mistakes, such as treating wrapped lists as bare arrays or relying on raw browser error text to understand backend failures.

Cursor rule for Cursor

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add rules/xc404/kiwi/api-frontend-integration
Clone the repo
git clone --depth 1 https://github.com/xc404/kiwi

Made for: Cursor.

Per session 487 This file is loaded in full into every session.
When invoked 487 The same file — it is already loaded in full.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00487 $0.00487
Opus 5 $0.00244 $0.00244
Sonnet 5 $0.00097 $0.00097
Haiku 4.5 $0.00049 $0.00049

Measured 2d ago against content hash 536b81455733, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

api-frontend-integration scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.cursor/rules/api-frontend-integration.mdc · 23 lines

What it actually says

前后端对接与前端异步规范(kiwi)

1. 集合类接口与 CollectionResult

  • 后端若直接返回 Collection数组,会经 ResponseAdvice 等逻辑包装为 CollectionResult(字段 content 承载实际集合),再包在统一响应(如 R)里。
  • 前端对接时:不要假设 HTTP 体是「裸数组」;应从统一成功载荷中读取 content(或项目约定的等价路径),再映射为列表/表格数据。
  • 列表接口若日后扩展分页,CollectionResult 也便于扩展字段;对接时以类型定义或服务层封装为准。

2. 异常与 ExceptionHandler

  • 业务与框架异常由 ExceptionHandler@ControllerAdvice)拦截,统一返回 R.fail(...)(含业务码、消息等),而不是把 Java 异常栈直接暴露给浏览器。
  • 前端错误处理应基于统一响应结构(成功/失败、codemsgdata 等)判断,并在 HTTP 拦截器或服务层集中处理登录失效、无权限等分支;不要只依赖 catch 原始 Error 文本当作后端语义。

3. 前端异步:优先 Observable

  • 在 Angular 前端(kiwi-admin/frontend)中,异步数据流优先使用 RxJS Observable(如 HttpClient 返回的流、switchMap/pipe 组合),与现有服务层风格一致。
  • 仅在边界处(如必须对接仅支持 Promise 的 API)再使用 lastValueFrom / firstValueFrom 等转换;避免在业务层大面积混用 async/await 与 Observable 导致订阅与取消逻辑不一致。
Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 23 lines · 487 tokens per session scan A 536b81455733

Subscribe to this mod's changes

api-frontend-integration is a cursor rule published in the GitHub repository xc404/kiwi (7 stars, last pushed 7d ago), licensed MIT. It adds 487 tokens to every session, about $0.0024 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.