Skip to content

04. 数据之源:使用 FreeAPI 连接世界

课时信息

📅 时间:10:40 - 11:25 🎯 目标:学会寻找并调用公共 API,让 App 拥有“千里眼”

1. 什么是 API?

API (Application Programming Interface) 是 App 与世界对话的窗口。

  • 你的 App 是 服务员 (Frontend)。
  • API 是 厨师 (Backend)。
  • 你递进去菜单 (Request),厨师递出来菜品 (Response JSON)。

2. 宝藏之地:FreeAPI

在没有自己写后端之前,我们可以利用互联网上现成的免费资源。 访问 Free API (www.free-api.com),这里收集了各种有趣的接口:

  • 工具类: 天气、汇率、快递查询。
  • 内容类: 每日一言、随机笑话、新闻头条。
  • 娱乐类: 随机图片、星座运势。

3. 实战:调用 "一言" (Hitokoto)

我们将使用 一言 API 为 App 增加随机格言功能。

3.1 准备工作 (Dio)

Flutter 原生 http 库较弱,我们使用 Dio

AI 指令: "请在 pubspec.yaml 中添加 dio 依赖,并执行安装。"

3.2 步骤一:分析数据

先在浏览器打开 API 地址:https://v1.hitokoto.cn/ 看到 JSON:

json
{
  "id": 123,
  "hitokoto": "生活明朗,万物可爱。",
  "from": "微博"
}

3.3 步骤二:生成模型 (Model)

AI 指令: "这是 API 返回的 JSON:{...} (粘贴上面的 JSON)。请帮我写一个 Dart 类 Hitokoto,包含 fromJson 方法。"

3.4 步骤三:发送请求

AI 指令: "写一个异步函数 fetchHitokoto。使用 Dio 发起 GET 请求 https://v1.hitokoto.cn/。成功返回 Hitokoto 对象,失败抛出异常。"

3.5 步骤四:UI 展示

AI 指令: "在界面中心显示获取到的 hitokoto 文字。添加一个刷新按钮,点击时重新调用接口。"

4. 调试小技巧

如果请求失败:

  1. 检查网络: 模拟器是否连网?
  2. HTTPS: 现在的 API 几乎都强制 HTTPS。
  3. 打印日志: 让 AI 在 catch 块里 print(e),看看具体报什么错。

5. 进阶:Supabase 云后端 (BaaS)

5.1 全栈开发的"最后一公里"

在 Day 2 的课程中,我们使用了公共 API (如一言)。但如果你想做一个 "记账 App""待办清单",数据必须存下来。 传统做法是:买服务器 -> 装 Linux -> 装 MySQL -> 写 Node.js/Java 接口 -> 部署。 这对初学者太难了。

Supabase (BaaS - Backend as a Service) 完美解决了这个问题。

5.2 什么是 Supabase?

把它想象成一个 "云端大管家"。 你只需要在网页上点几下,它就自动为你提供:

  • Postgres 数据库: 世界上最强大的开源关系型数据库。
  • Authentication: 登录系统 (支持 Google/GitHub/手机号登录)。
  • Auto API: 建好表,增删改查的 API 自动生成。
  • Storage: 存头像、存文件的对象存储。

最重要的是:它对个人开发者有很宽松的免费额度

5.3 五分钟上手实战

Step 1: 创建项目

  1. 访问 supabase.com 并使用 GitHub 登录。
  2. 点击 "New Project"。
  3. 输入 Project Name (如 my-first-app) 和 Database Password。
  4. Region 选择离你近的 (如 Singapore 或 Tokyo)。

Step 2: 创建数据表 (Table Editor)

  1. 进入 Dashboard,点击左侧表格图标 (Table Editor)。
  2. 点击 "New Table"。
  3. Name 填 notes (笔记)。
  4. 添加列 (Columns):
    • id: int8, Primary Key (默认已有)
    • content: text (存笔记内容)
    • created_at: timestamptz (默认已有)
  5. 点击 Save。

Step 3: 体验 API (API Docs)

Supabase 已经自动为你生成了 API!

  1. 点击左侧 "API Docs"。
  2. 在 "Tables and Views" 里找到 notes
  3. 点击 "Javascript" 或 "Bash"。
  4. 你会看到如下代码示例:
javascript
// 插入数据
const { data, error } = await supabase
  .from('notes')
  .insert([
    { content: '学会 Supabase 真是太棒了!' },
  ])

5.4 在 Flutter/Web 中集成

让 AI 帮你写代码:

Prompt: "我要在 Flutter 项目中接入 Supabase。

  1. 请帮我添加 supabase_flutter 依赖。
  2. 这是我的 URL: https://xyz.supabase.co 和 Anon Key: eyJ...
  3. 请写一个 Service 类,实现对 notes 表的增删改查。"

5.5 Supabase 与 AI

Supabase 完美支持 pgvector。这意味着你可以用它来存储文本的 Embedding (向量),是构建 RAG (知识库问答) 应用的首选数据库。

替代方案

国内由于网络原因,访问 Supabase 可能会慢。 国内类似的替代品有:

  • MemFire Cloud: 基于 Supabase 的国内托管版。
  • LeanCloud: 老牌的 BaaS 服务商。
  • 腾讯云开发 (CloudBase): 微信小程序原生支持。

任务

浏览 FreeAPI,挑选一个你感兴趣的接口(比如查询你所在城市的天气),尝试让 AI 帮你接入。

Made with vitepress by williamwong