npm 包 ember-apollo-server 使用教程

阅读时长 8 分钟读完

什么是 ember-apollo-server?

ember-apollo-server 是一个基于 Ember.js 和 Apollo 的服务器端框架。它能够帮助开发者快速地构建 GraphQL API。它支持数据响应式更新和实时订阅,让开发者可以轻松地构建实时应用。另外,它还支持多数据库后端,包括 Mongo, PostgreSQL, etc.

使用 ember-apollo-server,我们可以在应用程序中轻松集成其他库,并通过浏览器或移动端访问这些 API。总之,它是一个受欢迎的服务器端框架,值得尝试。

开始使用 ember-apollo-server

步骤一:创建一个新的 Ember 应用程序

首先,需要创建一个全新的 Ember 应用程序。在终端中,运行以下命令:

该命令将创建一个名为 my-ember-app 的新应用程序。

步骤二:安装依赖库

完成应用程序的创建后,需要安装 ember-apollo-server 并且将其链接到应用程序中。

在终端中,运行以下命令:

步骤三:创建服务器端逻辑

在创建完应用程序并安装了所需的依赖库后,需要创建服务器端逻辑。我们可以通过运行以下命令来完成此操作:

该命令将在 my-ember-app/app 目录下自动生成 server 目录,并为您创建服务器端逻辑的初始结构。

步骤四:添加 GraphQL schema

下一步,需要在 app/server/schema.js 中添加 GraphQL schema。schema 是您用来定义服务器暴露的 query、mutation 和 subscription 的方式。

以下是 sample todo GraphQL schema:

-- -------------------- ---- -------
------ - --- - ---- ------------------------

------ ------- ----
  ---- ----- -
    ------ ------
  -

  ---- ---- -
    --- ---
    ----- -------
    ---------- --------
  -

  ---- -------- -
    ------------- -------- ---------- ---------- ----
  -

  ---- ------------ -
    ---------- ----
  -
--

步骤五:添加 GraphQL resolvers

接下来,需要实现 app/server/resolvers.js 中的 GraphQL resolvers。

这些 resolvers 是将客户端查询转换为服务器数据的函数。它们可以基于硬编码的值或来自数据源的其他数据。

以下是 sample todo GraphQL resolvers:

-- -------------------- ---- -------
------ ------- -
  ------ -
    ------ ----- --- --- - ----------- -- -- -
      ------ -----------------------------
    --
  --
  --------- -
    -------- ----- --- - ----- --------- -- - ------------ ------ -- -- -
      ----- ------- - ----- ---------------------------
        -----
        ----------
      ---

      ---------------------------- - ---------- ------- ---
      ------ --------
    --
  --
  ------------- -
    ---------- -
      ---------- --- --- - ------ -- -- -------------------------------------
    --
  --
--

步骤六:添加服务器数据源

接下来,需要在 app/server/data-sources.js 中定义服务器数据源。数据源是用来引用实现数据访问逻辑的对象。

以下是 sample todo 数据源:

-- -------------------- ---- -------
------ ------- ----- -------- -
  ------------- -
    -- ------ -----
  -

  ------------ ----- --------- -- -
    -- ------ ----
    -- ------ ----
  -
-

步骤七:将服务器连接到应用程序

最后一步是在 app/server/index.js 中启动服务器。

以下是 sample todo 服务器:

-- -------------------- ---- -------
------ - ------------ - ---- ------------------------
------ - -------------------- - ---- ----------------
------ ------- ---- ----------
------ - ------------ - ---- -------
------ ------ ---- ------------------------

------ -------- ---- -----------
------ --------- ---- --------------
------ -------- ---- -----------------

----- --- - ----------

----- ------ - ----------------------
  ---------
  ----------
---

----- ------ - --- ---------

----- ------ - --- --------------
  -------
  ------------ -- -- --
    --------- --- -----------
  ---
  -------- -- ---- ---------- -- -- -
    -- ------------ -
      ------ - ---------------------- ------ --
    -

    ------ - ------ --
  --
  -------------- -
    ---------- ------------------ ---------- -- -
      -- ------- -------------- -- ----- ---------- ------ -----------
    --
  --
---

------------------------ --- ---

----- ---------- - ------------------
-----------------------------------------------

------------------- ----- ---- -- -- -- -
  --------------- ------ ----- -- ---------------------------------------------
  --------------- ------------- ----- -- -------------------------------------------------
---

步骤八:测试服务器

完成服务器的启动后,可以通过访问 http://localhost:4000 来测试 API。

您可以将以下内容粘贴到 GraphiQL 中并执行:

-- -------------------- ---- -------
-------- ------- -
  ------------- ---- ------ ---------- ------ -
    --
    ----
    ---------
  -
-

------------ ----------- -
  --------- -
    --
    ----
    ---------
  -
-

在添加一个新的 todo 后,您将能够在订阅器中看到以下内容:

-- -------------------- ---- -------
-
  ------- -
    ------------ -
      ----- ----
      ------- ---- ------
      ------------ -----
    -
  -
-

结论

以上是 ember-apollo-server 官方文档简单教程。希望对大家有所帮助,大家可以进一步去探索 GraphQL 和 ember-apollo-server 的更多用法和技术细节。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60065f7f238a385564ab6add

纠错
反馈