$ cd apollo-example
$ npm init

其次,我們安裝所需的兩個 NPM 包。

  1. apollo-server包含運行 GraphQL 服務器所需的一切
  2. moesif-express連接到 Moesif API 分析服務
$ npm i apollo-server moesif-express

接下來,我們創建一個index.js包含所有設置代碼的文件。

const { ApolloServer, gql } = require("apollo-server");
const moesif = require("moesif-express");

const applicationId = "<MOESIF_APPLICATION_ID>";
const typeDefs = ...;
const resolvers = ...;

new ApolloServer({ typeDefs, resolvers })
.listen(8888)
.then(({ server }) => {
const moesifMiddleware = moesif({ applicationId });
server.on("request", moesifMiddleware);
});

代碼的關鍵部分在最后。對象listen的方法ApolloServer返回一個承諾。

這個承諾使我們能夠通過對象訪問底層 HTTP 服務器server

該服務器對象是事件的事件發射器request

我們可以借助moesif工廠函數創建一個中間件函數,并將其用作request事件的事件監聽器。

設置 Express GraphQL

Apollo 服務器也具有 Express 集成,但還有另一種可與 Express 配合使用的 GraphQL 服務器實現,因此讓我們看看如何設置它。

首先,我們創建一個項目。

$ mkdir express-example
$ cd express-example
$ npm init

其次,我們安裝所需的軟件包。

const express = require('express');
const expressGraphql = require('express-graphql');
const moesif = require("moesif-express");

const applicationId = "<MOESIF_APPLICATION_ID>";
const schema = ...;

const moesifMiddleware = moesif({ applicationId });
const graphqlMiddleware = expressGraphql({ schema });

const app = express();
app.use(moesifMiddleware);
app.use("/graphql", graphqlMiddleware);

app.listen(8888);

這里的過程相當簡單。我們使用moesif工廠函數來獲取可以與 Expressapp對象一起使用的中間件函數。

就代碼而言,這項工作就是全部要做的。現在,到達服務器(無論是 Express 還是 Apollo)的每個請求都將被轉發到 Moesif API Analytics 服務,并可進行進一步檢查。

適用于 GraphQL 的 Moesif API 分析

在我們用自己選擇的框架設置好 GraphQL 服務器后,Moesif 中間件會將請求數據發送到 Moesif 服務。就 GraphQL 而言,這意味著 Moesif 服務現在知道我們的查詢和變更。

如果我們使用 apollo-server 獨立版本,GraphQL API 會在所有路由上應答。Moesif 期望在/graphql路由上進行 GraphQL 查詢,因此我們必須使用此路由。

如果我們登錄我們的Moesif 控制臺使用瀏覽器,我們可以在API 分析部分找到所有已記錄的事件。這包括但不限于發送到/graphql路由的 GraphQL 請求。

為了僅顯示 GraphQL 查詢請求而不顯示其他 HTTP 請求,例如為 GraphiQL UI 加載 HTML 或自省查詢以獲取有關 GraphQL API 的信息,我們必須使用左側的過濾器側欄。

在API 過濾器中,我們選擇請求 -> URI 路由并將其設置/graphql為擺脫非 GraphQL 請求。

現在我們只有 GraphQL 請求,我們可以應用GraphQL 查詢過濾器來關注我們想要監控的特定查詢。

例如,我們可以通過選擇GraphQL 查詢過濾器并將其設置為≠ IntrospectionQuery來擺脫IntrospectionQuery請求。request.graphql.operation_name

結論

使用 Node.js 框架將Moesif API Analytics添加到我們的 GraphQL API 構建中只需幾分鐘。我們必須moesif-express通過 NPM 安裝,需要中間件,使用我們的 Moesif 應用密鑰對其進行配置,然后就可以開始了。

設置完成后,我們所有的請求都將被發送到 Moesif API Analytics 服務并保存以供日后使用。

稍后,當我們的 API 啟動并運行時,我們可以根據 GraphQL 查詢的內容進行過濾、排序和分段,以深入了解我們的查詢。

原文地址:https://www.moesif.com/blog/technical/graphql/Monitoring-GraphQL-APIs-Built-With-Apollo-and-Express/

上一篇:

用NestJS和Prisma: Authentication構建一個REST API

下一篇:

使用Golang和MongoDB構建REST API- Echo版本
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費