[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"public:announcements":3,"tag:posts:fastapi:zh:1":4,"footer:categories:zh":159,"public:navigations:zh":264,"tag:detail:fastapi:zh":307},[],{"items":5,"total":78,"page":7,"page_size":158,"total_pages":7},[6,55,82,113,138],{"id":7,"title":8,"subtitle":9,"slug":10,"excerpt":11,"cover_image":12,"author":13,"category":16,"tags":25,"status":49,"views":50,"likes_count":24,"comments_count":51,"is_pinned":30,"created_at":52,"published_at":52,"updated_at":53,"reading_time":54},1,"快速上手 FastAPI - 构建高性能 REST API",null,"post-1-快速上手FastA","FastAPI 是现代 Python Web 框架中的佼佼者，基于类型提示自动生成文档、支持异步操作、性能媲美 Node.js。本文将通过实战项目带你从零构建一个完整的 CRUD API，涵盖路由定义、请求验证、依赖注入、数据库集成等核心特性，让你在 30 分钟内掌握 FastAPI 的精髓。","",{"id":7,"username":14,"nickname":14,"avatar":9,"cover_image":9,"bio":9,"website":9,"github":9,"avatar_source":9,"resolved_avatar_url":9,"title":9,"created_at":15},"Choyeon","2026-09-30T18:09:53.330367Z",{"id":17,"name":18,"slug":19,"description":20,"icon":21,"color":22,"cover_image":9,"created_at":23,"post_count":24},2,"教程","tutorial","从零开始的实战教程，步骤清晰，代码完整，适合各阶段开发者学习","heroicons:academic-cap","#10b981","2026-09-30T18:09:53.641581Z",0,[26,32,37,43],{"id":7,"name":27,"slug":28,"color":29,"icon":9,"is_active":30,"created_at":31,"post_count":24},"Python","python","#3776ab",true,"2026-09-30T18:09:53.663835Z",{"id":17,"name":33,"slug":34,"color":35,"icon":9,"is_active":30,"created_at":36,"post_count":24},"FastAPI","fastapi","#009688","2026-09-30T18:09:53.669567Z",{"id":38,"name":39,"slug":40,"color":41,"icon":9,"is_active":30,"created_at":42,"post_count":24},25,"Backend","backend","#94a3b8","2026-09-30T18:09:53.739676Z",{"id":44,"name":45,"slug":46,"color":47,"icon":9,"is_active":30,"created_at":48,"post_count":24},15,"性能优化","performance","#f97316","2026-09-30T18:09:53.707190Z","published",557,6,"2026-08-17T23:09:53.733462Z","2026-10-01T11:19:50.917768Z",4,{"id":56,"title":57,"subtitle":9,"slug":58,"excerpt":59,"cover_image":9,"author":60,"category":61,"tags":62,"status":49,"views":77,"likes_count":24,"comments_count":78,"is_pinned":79,"created_at":80,"published_at":80,"updated_at":81,"reading_time":7},32,"Alembic 深度指南：数据库迁移 + 自动生成 + 分支合并","post-32-Alembic深度","SQLAlchemy 官方迁移工具 Alembic 完全指南：从 env.py 配置、autogenerate 自动检测模型变更（字段、索引、约束）、批处理脚本、downgrade 回滚策略，到多人并发开发时 migration 分支冲突、head 分叉合并的标准操作流程，附生产部署检查表。",{"id":7,"username":14,"nickname":14,"avatar":9,"cover_image":9,"bio":9,"website":9,"github":9,"avatar_source":9,"resolved_avatar_url":9,"title":9,"created_at":15},{"id":17,"name":18,"slug":19,"description":20,"icon":21,"color":22,"cover_image":9,"created_at":23,"post_count":24},[63,64,70,76],{"id":7,"name":27,"slug":28,"color":29,"icon":9,"is_active":30,"created_at":31,"post_count":24},{"id":65,"name":66,"slug":67,"color":68,"icon":9,"is_active":30,"created_at":69,"post_count":24},10,"PostgreSQL","postgresql","#336791","2026-09-30T18:09:53.691803Z",{"id":71,"name":72,"slug":73,"color":74,"icon":9,"is_active":30,"created_at":75,"post_count":24},12,"Git","git","#f05032","2026-09-30T18:09:53.697858Z",{"id":17,"name":33,"slug":34,"color":35,"icon":9,"is_active":30,"created_at":36,"post_count":24},122,5,false,"2026-09-29T22:09:53.733462Z","2026-10-01T10:32:41.701466Z",{"id":83,"title":84,"subtitle":9,"slug":85,"excerpt":86,"cover_image":9,"author":87,"category":88,"tags":95,"status":49,"views":109,"likes_count":24,"comments_count":110,"is_pinned":79,"created_at":111,"published_at":111,"updated_at":112,"reading_time":7},23,"GraphQL vs REST：从 7 个维度深度对比","post-23-GraphQLvs","终结选型焦虑：从网络传输效率、前端开发体验、后端演进成本、缓存策略、类型安全、安全风险、生态工具链 7 大维度系统对比 GraphQL 与 REST，给出清晰决策树与混合架构模式。",{"id":7,"username":14,"nickname":14,"avatar":9,"cover_image":9,"bio":9,"website":9,"github":9,"avatar_source":9,"resolved_avatar_url":9,"title":9,"created_at":15},{"id":51,"name":89,"slug":90,"description":91,"icon":92,"color":93,"cover_image":9,"created_at":94,"post_count":24},"随笔","essays","技术思考与开发心得分享，记录程序员成长路上的点滴感悟","heroicons:pencil-square","#f43f5e","2026-09-30T18:09:53.653105Z",[96,97,103,108],{"id":17,"name":33,"slug":34,"color":35,"icon":9,"is_active":30,"created_at":36,"post_count":24},{"id":98,"name":99,"slug":100,"color":101,"icon":9,"is_active":30,"created_at":102,"post_count":24},8,"Node.js","nodejs","#339933","2026-09-30T18:09:53.685769Z",{"id":51,"name":104,"slug":105,"color":106,"icon":9,"is_active":30,"created_at":107,"post_count":24},"TypeScript","typescript","#3178c6","2026-09-30T18:09:53.680697Z",{"id":44,"name":45,"slug":46,"color":47,"icon":9,"is_active":30,"created_at":48,"post_count":24},236,7,"2026-09-18T16:09:53.733462Z","2026-10-02T00:03:32.244466Z",{"id":114,"title":115,"subtitle":9,"slug":116,"excerpt":117,"cover_image":9,"author":118,"category":119,"tags":120,"status":49,"views":135,"likes_count":24,"comments_count":65,"is_pinned":79,"created_at":136,"published_at":136,"updated_at":137,"reading_time":7},20,"CQRS + Event Sourcing 架构模式解析","post-20-CQRSEve","透彻解析两种高复杂度分布式架构模式：CQRS 读写模型分离实现查询极致性能、Event Sourcing 以事件作为唯一真相源实现全量审计与时间回溯，讨论一致性\u002F快照\u002F幂等难点与反模式。",{"id":7,"username":14,"nickname":14,"avatar":9,"cover_image":9,"bio":9,"website":9,"github":9,"avatar_source":9,"resolved_avatar_url":9,"title":9,"created_at":15},{"id":51,"name":89,"slug":90,"description":91,"icon":92,"color":93,"cover_image":9,"created_at":94,"post_count":24},[121,127,128,134],{"id":122,"name":123,"slug":124,"color":125,"icon":9,"is_active":30,"created_at":126,"post_count":24},13,"算法","algorithms","#ef4444","2026-09-30T18:09:53.700921Z",{"id":65,"name":66,"slug":67,"color":68,"icon":9,"is_active":30,"created_at":69,"post_count":24},{"id":129,"name":130,"slug":131,"color":132,"icon":9,"is_active":30,"created_at":133,"post_count":24},11,"Redis","redis","#dc382d","2026-09-30T18:09:53.695422Z",{"id":17,"name":33,"slug":34,"color":35,"icon":9,"is_active":30,"created_at":36,"post_count":24},246,"2026-09-14T09:09:53.733462Z","2026-10-01T04:54:47.237263Z",{"id":139,"title":140,"subtitle":9,"slug":141,"excerpt":142,"cover_image":9,"author":143,"category":144,"tags":145,"status":49,"views":155,"likes_count":24,"comments_count":78,"is_pinned":79,"created_at":156,"published_at":156,"updated_at":157,"reading_time":7},19,"JWT 认证安全最佳实践 + OAuth2 vs SAML","post-19-JWT认证安全最佳","系统性归纳 JWT 常见安全漏洞防护：算法混淆攻击（none\u002FRS256→HS256）、密钥爆破、KID注入、重放攻击防御，再从多个维度对比 OAuth2（授权码+PKCE）、OIDC、SAML 2.0 三种主流认证协议选型。",{"id":7,"username":14,"nickname":14,"avatar":9,"cover_image":9,"bio":9,"website":9,"github":9,"avatar_source":9,"resolved_avatar_url":9,"title":9,"created_at":15},{"id":51,"name":89,"slug":90,"description":91,"icon":92,"color":93,"cover_image":9,"created_at":94,"post_count":24},[146,152,153,154],{"id":147,"name":148,"slug":149,"color":150,"icon":9,"is_active":30,"created_at":151,"post_count":24},16,"安全","security","#14b8a6","2026-09-30T18:09:53.709991Z",{"id":17,"name":33,"slug":34,"color":35,"icon":9,"is_active":30,"created_at":36,"post_count":24},{"id":98,"name":99,"slug":100,"color":101,"icon":9,"is_active":30,"created_at":102,"post_count":24},{"id":7,"name":27,"slug":28,"color":29,"icon":9,"is_active":30,"created_at":31,"post_count":24},135,"2026-09-11T20:09:53.733462Z","2026-10-01T04:54:47.655492Z",9,[160,175,183,198,211,226,235,249],{"id":7,"name":161,"slug":166,"description":167,"icon":172,"color":173,"cover_image":9,"created_at":174,"post_count":98},{"en":162,"ja":163,"zh":164,"zh_Hant":165},"Technology","テクノロジー","技术","技術","technology",{"en":168,"ja":169,"zh":170,"zh_Hant":171},"Cutting-edge technology exploration and in-depth analysis covering programming languages, frameworks, and architecture design","プログラミング言語、フレームワーク、アーキテクチャ設計を含む先端技術の探究","前沿技术探索与深度分析，涵盖编程语言、框架、架构设计等核心领域","前沿技術探索與深度分析，涵蓋編程語言、框架、架構設計等核心領域","heroicons:cog-6-tooth","#6366f1","2026-09-30T18:09:53.633610Z",{"id":17,"name":176,"slug":19,"description":179,"icon":21,"color":22,"cover_image":9,"created_at":23,"post_count":51},{"en":177,"ja":178,"zh":18,"zh_Hant":18},"Tutorial","チュートリアル",{"en":180,"ja":181,"zh":20,"zh_Hant":182},"Hands-on tutorials from scratch with clear steps and complete code for developers at all levels","ゼロから始める実践的なチュートリアル。明確な手順と完全なコードで、全てのレベルの開発者に最適","從零開始的實戰教程，步驟清晰，代碼完整，適合各階段開發者學習",{"id":184,"name":185,"slug":189,"description":190,"icon":195,"color":196,"cover_image":9,"created_at":197,"post_count":110},3,{"en":186,"ja":187,"zh":188,"zh_Hant":188},"Frontend","フロントエンド","前端","frontend",{"en":191,"ja":192,"zh":193,"zh_Hant":194},"Full coverage of web frontend development including Vue, React, new CSS features, and performance optimization","Vue、React、CSSの新機能やパフォーマンス最適化を含むWebフロントエンド開発の全領域","Web前端开发全栈覆盖，包括Vue、React、CSS新特性及性能优化等话题","Web前端開發全棧覆蓋，包括Vue、React、CSS新特性及性能優化等話題","heroicons:computer-desktop","#ec4899","2026-09-30T18:09:53.644838Z",{"id":54,"name":199,"slug":40,"description":203,"icon":208,"color":209,"cover_image":9,"created_at":210,"post_count":184},{"en":39,"ja":200,"zh":201,"zh_Hant":202},"バックエンド","后端","後端",{"en":204,"ja":205,"zh":206,"zh_Hant":207},"Server-side development best practices including API design, database optimization, and microservices architecture","API設計、データベース最適化、マイクロサービスアーキテクチャを含むサーバーサイド開発の実践","服务端开发实战经验，API设计、数据库优化、微服务架构等深度内容","服務端開發實戰經驗，API設計、數據庫優化、微服務架構等深度內容","heroicons:server-stack","#f59e0b","2026-09-30T18:09:53.647836Z",{"id":78,"name":212,"slug":217,"description":218,"icon":223,"color":224,"cover_image":9,"created_at":225,"post_count":24},{"en":213,"ja":214,"zh":215,"zh_Hant":216},"Fullstack","フルスタック","全栈","全棧","fullstack",{"en":219,"ja":220,"zh":221,"zh_Hant":222},"End-to-end development guides covering the full project lifecycle and technology stack selection","フロントエンドからバックエンドまでの開発プロセス全体をカバーするガイド","从前端到后端的全流程开发指南，覆盖完整项目生命周期与技术选型","從前端到後端的全流程開發指南，覆蓋完整項目生命週期與技術選型","heroicons:swatch","#8b5cf6","2026-09-30T18:09:53.650513Z",{"id":51,"name":227,"slug":90,"description":231,"icon":92,"color":93,"cover_image":9,"created_at":94,"post_count":54},{"en":228,"ja":229,"zh":89,"zh_Hant":230},"Essays","エッセイ","隨筆",{"en":232,"ja":233,"zh":91,"zh_Hant":234},"Technical reflections and development insights recording the programmer's growth journey","プログラマーの成長の軌跡を記録する技術的考察と開発の洞察","技術思考與開發心得分享，記錄程序員成長路上的點滴感悟",{"id":110,"name":236,"slug":240,"description":241,"icon":246,"color":247,"cover_image":9,"created_at":248,"post_count":54},{"en":237,"ja":238,"zh":239,"zh_Hant":239},"Tools","ツール","工具","tools",{"en":242,"ja":243,"zh":244,"zh_Hant":245},"Development toolchain and productivity tool recommendations to supercharge your development experience","開発効率を飛躍的に向上させるツールチェーンと生産性ツールの推奨","开发工具链与效率提升利器推荐，让你的开发体验如虎添翼","開發工具鏈與效率提升利器推薦，讓你的開發體驗如虎添翼","heroicons:wrench-screwdriver","#06b6d4","2026-09-30T18:09:53.655605Z",{"id":98,"name":250,"slug":255,"description":256,"icon":261,"color":262,"cover_image":9,"created_at":263,"post_count":24},{"en":251,"ja":252,"zh":253,"zh_Hant":254},"Translation","翻訳","翻译","翻譯","translation",{"en":257,"ja":258,"zh":259,"zh_Hant":260},"Curated translations of high-quality foreign technical articles to keep up with international trends","国際的な技術トレンドを追うための厳選された海外技術記事の翻訳","优质外文技术文章精选翻译，紧跟国际技术前沿动态","優質外文技術文章精選翻譯，緊跟國際技術前沿動態","heroicons:language","#84cc16","2026-09-30T18:09:53.658041Z",[265,274,280,287,294,301],{"id":7,"title":266,"url":271,"icon":9,"parent_id":9,"location":272,"order":7,"is_active":30,"target_blank":79,"created_at":273,"updated_at":9},{"zh":267,"en":268,"ja":269,"zh_TW":270},"首页","Home","ホーム","首頁","\u002F","header","2026-09-30T18:09:54.251095Z",{"id":17,"title":275,"url":279,"icon":9,"parent_id":9,"location":272,"order":17,"is_active":30,"target_blank":79,"created_at":273,"updated_at":9},{"zh":276,"en":277,"ja":278,"zh_TW":276},"文章","Posts","記事","\u002Fposts",{"id":184,"title":281,"url":286,"icon":9,"parent_id":9,"location":272,"order":184,"is_active":30,"target_blank":79,"created_at":273,"updated_at":9},{"zh":282,"en":283,"ja":284,"zh_TW":285},"分类","Categories","カテゴリー","分類","\u002Fcategories",{"id":54,"title":288,"url":293,"icon":9,"parent_id":9,"location":272,"order":54,"is_active":30,"target_blank":79,"created_at":273,"updated_at":9},{"zh":289,"en":290,"ja":291,"zh_TW":292},"标签","Tags","タグ","標籤","\u002Ftags",{"id":78,"title":295,"url":300,"icon":9,"parent_id":9,"location":272,"order":78,"is_active":30,"target_blank":79,"created_at":273,"updated_at":9},{"zh":296,"en":297,"ja":298,"zh_TW":299},"关于","About","概要","關於","\u002Fpage\u002Fabout",{"id":51,"title":302,"url":306,"icon":9,"parent_id":9,"location":272,"order":51,"is_active":30,"target_blank":79,"created_at":273,"updated_at":9},{"zh":303,"en":304,"ja":305,"zh_TW":303},"留言板","Guestbook","ゲストブック","\u002Fpage\u002Fguestbook",{"id":17,"name":308,"slug":34,"color":35,"icon":9,"is_active":30,"created_at":36,"post_count":78},{"en":33,"ja":33,"zh":33,"zh_Hant":33}]