API 部署设置
Flutter 新闻工具包使用 Dart Frog 来简化后端构建,通过聚合、组合和规范化来自多个来源的数据。您必须部署您的 Dart Frog API,以便为互联网提供请求服务。
Google Cloud
您可以将您的 Dart Frog API 部署到 Cloud Run,这是一个托管计算平台,允许您直接在 Google 的可扩展基础设施上运行容器。要将您的 API 部署到 Cloud Run,请查看 Google Cloud Run 上的 Dart Frog 说明,并查看下面的详细信息。此外,设置一个 GitHub Action 服务帐户,以简化 GitHub Actions 工作流对 Google Cloud 进行身份验证和授权的过程。
部署步骤
如果您为应用程序创建了开发和生产版本,您将需要两个对应的 Google Cloud 项目,其中必须部署 API
-
开发
-
项目 ID:example-name-dev
-
服务名称:example-name-api-dev
-
-
生产
-
项目 ID:example-name-prod
-
服务名称:example-name-api-prod
-
每次在 API 内部进行更改时,都必须将新版本部署到两个 GCP 项目的 Cloud Run。为此,请按照以下步骤操作
-
确保您已安装并配置了 Google Cloud SDK。
-
使用
gcloud auth login
命令登录 GCP 帐户,选择有权访问您的项目 GCP 帐户的电子邮件帐户。 -
运行
gcloud config set project <project_id>
命令,将项目设置为应用程序的项目之一。 -
在
api
文件夹中打开一个终端,并运行dart_frog build
命令。这将创建一个/build
目录,其中包含部署 API 所需的所有文件。 -
运行以下命令将 API 部署到 Cloud Run
gcloud run deploy [service_name] \
--source build \
--project=[project_id] \
--region=us-central \
--allow-unauthenticated注意:需要
--allow-unauthenticated
,因为该 API 可以公开访问。 -
如果部署是针对已存在的服务进行的(通过使用上面提供的
service_name
值),则 URL 将与以前的版本相同。否则,必须在项目的launch.json
文件中将其更新为API_BASE_URL
。
您可以选择配置 API 身份验证 和 您的 API 的用户身份验证(如果需要)。
其他
您还可以将您的 Dart Frog API 部署到其他服务,例如 AWS App Runner 或 Digital Ocean App Platform。
访问您的 API
默认情况下,您的应用程序期望从 localhost
接收新闻数据。为了从您部署的 API 接收数据,您必须将您的应用程序指向您的新 URL。
如果您使用的是 Android 模拟器,则必须将 baseUrl
设置为 http://10.0.2.2:8080
而不是 https://:8080
。
创建一个新的 ApiClient
类,该类扩展 FlutterNewsExampleApiClient
并将 baseUrl
字段设置为您的新 API URL。此外,覆盖任何与您的 API 请求架构不同的 FlutterNewsExampleApiClient
方法,并实现它们以适当地处理请求。
最后,编辑您希望从部署的 API 接收数据的每个应用程序版本的 main_flavor.dart
文件。删除将 apiClient
分配给 FlutterNewsExampleApiClient.localhost
的操作,并将 apiClient
分配给您的新 API 客户端的实例。例如
final apiClient = YourNewsApiClient(
tokenProvider: tokenStorage.readToken,
baseURL: 'https://yourApiBaseURL',
);