算機(jī)工具類-開發(fā)工具Skills】cc-skill-backend-patterns 技能)
后端架構(gòu)模式、API設(shè)計(jì)、數(shù)據(jù)庫優(yōu)化以及Node.js、Express和Next.js API路由的服務(wù)器端最佳實(shí)踐。技能概述cc-skill-backend-patterns 技能是一個(gè)專注于后端開發(fā)模式和最佳實(shí)踐的技能。它提供了可擴(kuò)展服務(wù)器端應(yīng)用的架構(gòu)模式包括API設(shè)計(jì)、數(shù)據(jù)庫優(yōu)化、緩存策略、錯(cuò)誤處理、認(rèn)證授權(quán)、速率限制、后臺(tái)作業(yè)和日志監(jiān)控等方面的詳細(xì)指導(dǎo)和代碼示例。該技能幫助開發(fā)者構(gòu)建健壯、可維護(hù)的后端系統(tǒng)。下載地址https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/cc-skill-backend-patterns主要功能API設(shè)計(jì)模式RESTful API結(jié)構(gòu)、倉儲(chǔ)模式、服務(wù)層模式、中間件模式數(shù)據(jù)庫模式查詢優(yōu)化、N1查詢預(yù)防、事務(wù)模式緩存策略Redis緩存層、Cache-Aside模式錯(cuò)誤處理模式集中式錯(cuò)誤處理器、指數(shù)退避重試機(jī)制認(rèn)證和授權(quán)JWT令牌驗(yàn)證、基于角色的訪問控制RBAC速率限制簡單的內(nèi)存速率限制器實(shí)現(xiàn)后臺(tái)作業(yè)和隊(duì)列簡單隊(duì)列模式、異步作業(yè)處理日志和監(jiān)控結(jié)構(gòu)化日志記錄、請(qǐng)求追蹤觸發(fā)條件在以下情況下應(yīng)該調(diào)用此技能:需要設(shè)計(jì)和實(shí)現(xiàn)可擴(kuò)展的后端架構(gòu)需要優(yōu)化API設(shè)計(jì)和數(shù)據(jù)庫查詢性能需要實(shí)現(xiàn)認(rèn)證、授權(quán)和安全機(jī)制需要處理錯(cuò)誤、實(shí)現(xiàn)緩存或后臺(tái)作業(yè)需要建立日志和監(jiān)控系統(tǒng)使用場景場景1API設(shè)計(jì)當(dāng)需要設(shè)計(jì)RESTful API或?qū)崿F(xiàn)倉儲(chǔ)模式、服務(wù)層模式時(shí)可以使用此技能獲取最佳實(shí)踐和代碼示例。場景2性能優(yōu)化當(dāng)需要優(yōu)化數(shù)據(jù)庫查詢、實(shí)現(xiàn)緩存策略或解決N1查詢問題時(shí)可以參考技能提供的優(yōu)化模式。場景3安全實(shí)現(xiàn)當(dāng)需要實(shí)現(xiàn)JWT認(rèn)證、基于角色的訪問控制或速率限制時(shí)可以使用此技能獲取實(shí)現(xiàn)方案。場景4系統(tǒng)可靠性當(dāng)需要實(shí)現(xiàn)錯(cuò)誤處理、重試機(jī)制、后臺(tái)作業(yè)或日志監(jiān)控時(shí)可以參考技能提供的模式和實(shí)現(xiàn)。處理過程1. API設(shè)計(jì)模式提供RESTful API設(shè)計(jì)指南包括資源導(dǎo)向的URL結(jié)構(gòu)、查詢參數(shù)使用、倉儲(chǔ)模式抽象數(shù)據(jù)訪問、服務(wù)層分離業(yè)務(wù)邏輯、中間件處理請(qǐng)求響應(yīng)管道。2. 數(shù)據(jù)庫優(yōu)化指導(dǎo)如何優(yōu)化數(shù)據(jù)庫查詢包括選擇所需列、預(yù)防N1查詢問題、使用事務(wù)確保數(shù)據(jù)一致性。3. 緩存實(shí)現(xiàn)提供Redis緩存層實(shí)現(xiàn)和Cache-Aside模式幫助提升應(yīng)用性能和響應(yīng)速度。4. 錯(cuò)誤處理提供集中式錯(cuò)誤處理器和指數(shù)退避重試機(jī)制確保應(yīng)用的健壯性和可靠性。5. 認(rèn)證授權(quán)提供JWT令牌驗(yàn)證和基于角色的訪問控制實(shí)現(xiàn)確保應(yīng)用的安全性。6. 其他模式提供速率限制、后臺(tái)作業(yè)隊(duì)列、結(jié)構(gòu)化日志等實(shí)現(xiàn)模式幫助構(gòu)建完整的生產(chǎn)級(jí)應(yīng)用。輸入要求使用此技能時(shí)用戶需要提供:項(xiàng)目的技術(shù)棧Node.js、Express、Next.js等需要解決的具體問題或需要實(shí)現(xiàn)的功能當(dāng)前的架構(gòu)設(shè)計(jì)和代碼結(jié)構(gòu)性能要求和安全需求輸出說明技能將提供:架構(gòu)設(shè)計(jì)建議和最佳實(shí)踐詳細(xì)的代碼示例和實(shí)現(xiàn)方案性能優(yōu)化建議安全實(shí)現(xiàn)指導(dǎo)錯(cuò)誤處理和監(jiān)控方案使用示例示例1倉儲(chǔ)模式實(shí)現(xiàn)interface MarketRepository {findAll(filters?: MarketFilters): PromiseMarket[]findById(id: string): PromiseMarket | nullcreate(data: CreateMarketDto): PromiseMarketupdate(id: string, data: UpdateMarketDto): PromiseMarketdelete(id: string): Promisevoid}class SupabaseMarketRepository implements MarketRepository {async findAll(filters?: MarketFilters): PromiseMarket[] {let query supabase.from(markets).select(*)if (filters?.status) {query query.eq(status, filters.status)}const { data, error } await queryif (error) throw new Error(error.message)return data}}示例2集中式錯(cuò)誤處理class ApiError extends Error {constructor(public statusCode: number,public message: string,public isOperational true) {super(message)Object.setPrototypeOf(this, ApiError.prototype)}}export function errorHandler(error: unknown, req: Request): Response {if (error instanceof ApiError) {return NextResponse.json({ success: false, error: error.message },{ status: error.statusCode })}if (error instanceof z.ZodError) {return NextResponse.json({ success: false, error: Validation failed, details: error.errors },{ status: 400 })}return NextResponse.json({ success: false, error: Internal server error },{ status: 500 })}示例3JWT認(rèn)證import jwt from jsonwebtokeninterface JWTPayload {userId: stringemail: stringrole: admin | user}export function verifyToken(token: string): JWTPayload {try {const payload jwt.verify(token, process.env.JWT_SECRET!) as JWTPayloadreturn payload} catch (error) {throw new ApiError(401, Invalid token)}}export async function requireAuth(request: Request) {const token request.headers.get(authorization)?.replace(Bearer , )if (!token) {throw new ApiError(401, Missing authorization token)}return verifyToken(token)}最佳實(shí)踐使用倉儲(chǔ)模式抽象數(shù)據(jù)訪問邏輯使業(yè)務(wù)邏輯與數(shù)據(jù)庫實(shí)現(xiàn)分離優(yōu)化查詢只選擇需要的列避免N1查詢問題實(shí)現(xiàn)緩存使用Redis等緩存層減少數(shù)據(jù)庫負(fù)載集中錯(cuò)誤處理統(tǒng)一處理錯(cuò)誤提供一致的錯(cuò)誤響應(yīng)使用事務(wù)確保數(shù)據(jù)一致性特別是在多個(gè)操作時(shí)實(shí)現(xiàn)速率限制防止濫用和保護(hù)API結(jié)構(gòu)化日志使用JSON格式記錄日志便于搜索和分析重試機(jī)制對(duì)于臨時(shí)性故障使用指數(shù)退避重試限制說明僅在任務(wù)明確匹配上述范圍時(shí)使用此技能不要將輸出視為環(huán)境特定驗(yàn)證、測試或?qū)<覍彶榈奶娲啡绻鄙俦匦璧妮斎搿?quán)限、安全邊界或成功標(biāo)準(zhǔn)請(qǐng)停止并請(qǐng)求澄清