本周系统设计复习:
- 负载均衡器到底是什么?
- 终极 API 学习路线图
- 30 个有用的 AI 应用,可以在 2025 年帮助你
- 生产 Web 应用的 10 个基本组件
- 我们如何设计有效和安全的 API?
- 代码优先 vs. API 优先
- 用简单术语解释 OAuth 2.0
- 一张图解释 Session、Cookie、JWT、Token、SSO 和 OAuth 2.0
API 学习路线图
API 是互联网通信的骨干。每个开发者都需要学习 API。以下是一个涵盖最重要主题的路线图:
1. API 介绍
API 是一组用于构建应用的协议和工具。存在不同类型的 API,如公共、私有和合作伙伴 API。
2. API 术语
需要理解各种 API 术语,如 HTTP 版本、cookies 和缓存。
3. API 风格
最常见的 API 风格是 REST、SOAP、GraphQL、gRPC 和 WebSockets。
4. API 认证
API 认证技术,如基本认证、令牌、JWTs、OAuth 和 Session 认证。
5. API 文档
好的 API 是可理解的。API 文档工具如 Swagger、Postman、Redoc 和 DapperDox 使其成为可能。
6. API 特性
关键 API 特性包括分页、参数、幂等性、API 版本控制、HATEOAS 和内容协商。
7. API 性能技术
常见 API 性能技术是缓存、速率限制、负载均衡、分页、数据库索引、扩展和性能测试。
8. API 网关
了解 API 网关,如 Amazon API Gateway、Azure API Services、Kong、Nginx 等。
9. API 实现框架
最流行的 API 开发框架是 Node.js、Spring、Flask、Django 和 FastAPI。
10. API 集成模式
了解各种 API 集成模式,如网关、事件驱动、webhook、轮询和批处理。
30 个有用的 AI 应用
AI 应用正在接管世界。每个可想象的用例都有一个 AI 应用。以下是不同类别的一些 AI 应用:
通用目的
Perplexity、Anthropic Claude、Grok、ChatGPT 和 Gemini
编写代码
Cursor、Replit、Windsurf AI、Github Copilot 和 Tabnine
生产力
Adobe(PDF 聊天)、Gemini for Gmail、Gamma(AI 幻灯片)、WisprFlow(AI 语音听写)和 Granola(AI 记事本)
受众构建
Delphi(AI 文本、语音)、HeyGen(视频翻译)、Persona(AI 代理构建器)、Captions(AI 视频编辑)和 OpusClips(视频复用)
创造力
ElevenLabs(逼真 AI 声音)、Midjourney、Suno AI(音乐生成)、Krea(增强图像)和 Photoroom(AI 图像编辑)
学习和成长
Particle News App、Rosebud(AI 日记应用)、NotebookLM、GoodInside(育儿副驾驶)和 Ash(AI 顾问)
生产 Web 应用的 10 个基本组件
CI/CD 管道 一切始于将代码部署到服务器实例的 CI/CD 管道。Jenkins 和 GitHub 等工具在这里帮助。
用户请求 用户请求源自 Web 浏览器。DNS 解析后,请求到达应用服务器。
负载均衡器和反向代理 负载均衡器和反向代理(如 Nginx 和 HAProxy)在 Web 应用服务器之间均匀分发用户请求。
CDN 请求也可以由内容分发网络(CDN)服务。
API 通信 Web 应用通过 API 与后端服务通信。
数据库和缓存 后端服务与数据库服务器或分布式缓存交互以提供数据。
作业队列 资源密集型和长时间运行的任务使用作业队列发送到作业 worker。
全文搜索 全文搜索服务支持搜索功能。Elasticsearch 和 Apache Solr 等工具可以在这里帮助。
监控 监控工具(如 Sentry、Grafana 和 Prometheus)存储日志并帮助分析数据以确保一切正常。
告警 在出现问题的情况下,告警服务通过 Slack 等平台通知开发者以快速解决。
API 设计
注意,API 设计不仅仅是 URL 路径设计。大多数时候,我们需要选择适当的资源名称、标识符和路径模式。同样重要的是设计适当的 HTTP 头字段或在 API 网关内设计有效的速率限制规则。
代码优先 vs. API 优先
我们为什么要考虑 API 优先设计?
微服务增加系统复杂性:我们有单独的服务来服务于系统的不同功能。虽然这种架构促进解耦和职责分离,我们需要处理服务之间的各种通信。
独立功能团队需要说同一种语言:专用功能团队只负责它们自己的组件和服务。建议组织通过 API 设计说同一种语言。
提高软件质量和开发者生产力:由于我们在项目开始时已经解决了大多数不确定性,整体开发过程更顺畅,软件质量大大提高。
OAuth 2.0 用简单术语解释
OAuth 2.0 是一个强大且安全的框架,允许不同应用代表用户安全地相互交互,而无需共享敏感凭据。
OAuth 中涉及的实体是用户、服务器和身份提供商(IDP)。
OAuth 令牌能做什么?
当你使用 OAuth 时,你获得一个代表你身份和权限的 OAuth 令牌。这个令牌可以做几件重要的事情:
单点登录(SSO):使用 OAuth 令牌,你可以使用一个登录登录多个服务或应用,使生活更轻松、更安全。
跨系统授权:OAuth 令牌允许你在各种系统之间共享你的授权或访问权限,所以你不必在每个地方单独登录。
访问用户资料:拥有 OAuth 令牌的应用可以访问你允许的部分用户资料,但它们不会看到所有内容。
记住,OAuth 2.0 是关于在不同应用和服务中保持你和你的数据安全,同时使你的在线体验无缝和无麻烦。
认证方法对比
当你登录网站时,你的身份需要被管理。以下是不同解决方案如何工作:
Session - 服务器存储你的身份并给浏览器一个 session ID cookie。这允许服务器跟踪登录状态。但 cookies 在跨设备时工作不佳。
Token - 你的身份编码成令牌发送到浏览器。浏览器在后续请求中发送此令牌进行认证。不需要服务器 session 存储。但令牌需要加密/解密。
JWT - JSON Web Tokens 使用数字签名标准化身份令牌以获得信任。签名包含在令牌中,所以不需要服务器 session。
SSO - 单点登录使用中央认证服务。这允许单个登录在多个站点工作。
OAuth2 - 允许一个站点有限访问你在另一个站点的数据,而无需交出密码。
QR Code - 将随机令牌编码成 QR 码用于移动登录。扫描二维码登录而无需输入密码。
本文为学习目的的个人翻译,译文仅供参考。
原文链接:EP147: The Ultimate API Learning Roadmap。
版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。