Skip to content

启动并验证服务

配置文件就绪后,一条命令即可启动数据墙DBW 服务。

启动服务

在配置文件所在目录运行:

bash
dab start

服务启动后会输出类似以下信息:

text
      Successfully completed runtime initialization.
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5000

服务默认在 http://localhost:5000 上监听。如需指定配置文件路径,使用 --config 参数:

bash
dab start --config ./settings/dab-config.json

TIP

启动前建议先运行 dab validate 进行配置预检。该命令会检查配置语法、结构、权限和数据库连接,返回 0 表示通过,非 0 表示存在问题。提前预检可以避免盲目启动后排查。

开发模式与生产模式

--host-mode 参数控制服务的运行行为:

模式适用场景特性
Development本地开发、测试启用 Swagger UI、详细错误信息、热重载
Production生产部署关闭 Swagger、隐藏详细错误堆栈、启用响应压缩

生产环境务必使用 Production 模式,避免暴露接口文档和错误详情。

验证 REST API

用浏览器或 curl 访问实体对应的 REST 端点。以 Todo 实体为例:

bash
curl http://localhost:5000/api/Todo

预期返回 JSON 格式的数据,结构与数据库表一致:

json
{
  "value": [
    { "id": 1, "title": "示例待办", "completed": false }
  ]
}

如果返回空数组 { "value": [] },说明表中没有数据,或连接字符串指向了错误的数据库。

验证 GraphQL API

GraphQL 端点统一在 /graphql,所有请求使用 POST

bash
curl -X POST http://localhost:5000/graphql \
  -H "Content-Type: application/json" \
  -d '{"query": "{ todos { items { id title completed } } }"}'

返回格式:

json
{
  "data": {
    "todos": {
      "items": [
        { "id": 1, "title": "示例待办", "completed": false }
      ]
    }
  }
}

你也可以用 GraphQL 客户端(如 Altair、Apollo Studio、Insomnia 等)直接连接 http://localhost:5000/graphql 浏览架构。这些工具提供自动补全和可视化界面,比命令行更友好。

浏览 Swagger 文档

开发模式下,数据墙DBW 自动提供 Swagger UI,可直接在浏览器中浏览和测试 API:

text
http://localhost:5000/swagger

Swagger 页面会列出所有可用的 REST 端点、参数和响应格式,方便开发调试。

健康检查

/health 端点返回服务整体状态,包括每个数据源和实体的连接状态:

bash
curl http://localhost:5000/health

响应示例:

json
{
  "version": "1.7.0",
  "currentRole": "anonymous",
  "configuration": {
    "hostMode": "Development",
    "restEnabled": true,
    "graphQLEnabled": true,
    "mcpEnabled": false
  },
  "checks": [
    { "name": "data-source", "status": "Healthy", "duration": "00:00:00.1234567" },
    { "name": "Todo", "status": "Healthy", "duration": "00:00:00.0987654" }
  ]
}

checks 数组中每个数据源和实体的 statusHealthy 表示数据库连接正常、实体配置正确。这个端点可以直接用作容器编排平台(Kubernetes、Docker Swarm)的存活探测和就绪探测地址。

用浏览器验证

如果不想用命令行,也可以直接在浏览器中验证 API:

  1. 打开浏览器访问 http://localhost:5000/api/Todo,查看返回的 JSON 数据。
  2. 访问 http://localhost:5000/swagger,浏览所有可用的 REST 端点并直接在页面上测试。
  3. 创建一个简单的 HTML 文件,用 fetch 调用 API:
html
<!DOCTYPE html>
<html>
<body>
  <h1>Todos</h1>
  <ul id="list"></ul>
  <script>
    fetch('http://localhost:5000/api/Todo')
      .then(r => r.json())
      .then(data => {
        const ul = document.getElementById('list');
        data.value.forEach(todo => {
          const li = document.createElement('li');
          li.textContent = todo.title;
          ul.appendChild(li);
        });
      });
  </script>
</body>
</html>

NOTE

如果 HTML 文件从本地文件系统打开(file:// 协议),需要确保配置中启用了 CORS("cors": { "origins": ["*"] }),否则浏览器会阻止请求。

清理环境

如果使用 Docker 运行了本地数据库,完成后可以停止并删除容器:

bash
# SQL Server
docker stop dab-mssql && docker rm dab-mssql

# PostgreSQL
docker stop dab-postgres && docker rm dab-postgres

# MySQL
docker stop dab-mysql && docker rm dab-mysql

常见问题

端口被占用

如果 5000 端口已被其他程序占用,可以通过运行时配置修改端口:

json
{
  "runtime": {
    "host": {
      "mode": "development",
      "urls": "http://localhost:5001"
    }
  }
}

配置文件未找到

dab start 默认在当前目录查找 dab-config.json。如果文件位于其他目录或使用了其他名称,请用 --config 指定路径。

数据库连接失败

如果启动时报数据库连接错误,检查:

  • 数据库是否正在运行且可访问。
  • 连接字符串中的主机地址、端口、用户名和密码是否正确。
  • 如果使用 @env(),环境变量是否已正确设置。

下一步

数据墙DBW 产品文档与开发指南。