- GraphQL 教程
- GraphQL - 首頁
- GraphQL - 簡介
- GraphQL - 環境搭建
- GraphQL - 架構
- GraphQL - 應用程式元件
- GraphQL - 示例
- GraphQL - 型別系統
- GraphQL - Schema
- GraphQL - Resolver
- GraphQL - 查詢
- GraphQL - 變異
- GraphQL - 驗證
- GraphQL - JQuery 整合
- GraphQL - React 整合
- GraphQL - Apollo Client
- GraphQL - 客戶端身份驗證
- GraphQL - 快取
- GraphQL 有用資源
- GraphQL - 快速指南
- GraphQL - 有用資源
- GraphQL - 討論
GraphQL - JQuery 整合
Web 應用程式以非同步方式(在後臺)傳送和檢索資料。AJAX 允許網站在不重新整理頁面的情況下將內容載入到螢幕上。jQuery 提供了幾種 AJAX 功能方法,從而簡化了 AJAX 的使用。在本章中,我們將學習如何將 GraphQL 與 jQuery 整合。
考慮一個使用客戶端-伺服器架構的應用程式。我們可以構建一個前端網頁,它從 GraphQL 伺服器請求資料。該網頁將使用 jQuery 向 GraphQL 伺服器發出 AJAX 呼叫。
要將 GraphQL 與 JQuery 整合,讓我們檢查 GraphiQL 請求頭並瞭解請求引數。
啟動 **hello-world** 應用程式(有關相關說明,請參閱第 6 章)。在 GraphiQL 視窗中鍵入 graphql 查詢 {greeting}。右鍵單擊並檢查或在 Chrome 中按 (ctrl + shift + I) 以轉到網路選項卡,如下所示 -
從簡單的 **hello-world** 示例中,我們可以瞭解到使用的 **http 方法** 是 **POST**。現在在瀏覽器中,向下滾動到標題部分以檢視 *請求有效負載*。
單擊 **檢視程式碼** 後,您將在 Chrome 的請求有效負載部分看到以下內容。
{"query":"{\n greeting\n}","variables":null,"operationName":null}
還要注意請求 URL **https://:9000/graphql**,該 URL 應從客戶端應用程式呼叫。
圖示
讓我們瞭解如何使用分步過程將 GraphQL 與 JQuery 整合。
設定伺服器
我們將學習如何使用以下步驟設定伺服器 -
步驟 1 - 下載並安裝專案所需的依賴項
建立一個名為 **jquery-server-app** 的資料夾。從終端將您的目錄更改為 jquery-server-app。按照環境設定章節中解釋的步驟 3 到 5 進行操作。
步驟 2 - 建立 Schema
在專案資料夾 **jquery-server-app** 中新增 schema.graphql 檔案,並新增以下程式碼 -
type Query
{
greeting: String
sayHello(name:String!):String
}
該檔案定義了兩個查詢 **greeting** 和 **sayHello**。**sayHello** 查詢接受一個字串引數並返回另一個字串。**sayHello()** 函式的引數不為空。
步驟 3 - 建立 Resolver
在專案資料夾中建立一個名為 resolvers.js 的檔案,並新增以下程式碼 -
const Query =
{
greeting: () => 'Hello GraphQL From TutorialsPoint !!' ,
sayHello:(root,args,context,info) => `Hi ${args.name} GraphQL server says Hello to you!!`
}
module.exports = {Query}
這裡,**greeting** 和 **sayHello** 是兩個 Resolver。在 **sayHello** Resolver 中,傳遞給 name 引數的值可以透過 args 訪問。要從模組外部訪問 Resolver 函式,必須使用 **module.exports** 匯出 Query 物件。
步驟 4 - 執行應用程式
建立一個 server.js 檔案。請參閱環境設定章節中的步驟 8。在終端中執行命令 *npm start*。伺服器將在 9000 埠啟動並執行。在這裡,我們使用 GraphiQL 作為客戶端來測試應用程式。
開啟瀏覽器並鍵入 URL **https://:9000/graphiql**。在編輯器中鍵入以下查詢 -
{
greeting,
sayHello(name:"Mohtashim")
}
伺服器的響應如下所示 -
{
"data": {
"greeting": "Hello GraphQL From TutorialsPoint !!",
"sayHello": "Hi Mohtashim GraphQL server says Hello to you!!"
}
}
設定客戶端
由於我們已經設定了伺服器,現在我們將學習如何設定客戶端。
步驟 1 - 在當前專案資料夾外部建立一個名為 **jquery-client-app** 的新資料夾
首先,我們將在專案資料夾外部建立一個名為 **jquery-client-app** 的資料夾。
步驟 2 - 為 jQuery 整合建立一個 HTML 頁面 **index.html**
我們將在 jQuery 中建立一個客戶端應用程式並呼叫這兩種方法。以下是 **index.html** 檔案的程式碼。**index.html** 頁面在單擊按鈕 - **Greet** 和 **SayHello** 時向伺服器傳送請求。我們將使用 **$.ajax()** 函式發出非同步請求。
<!DOCTYPE html>
<html>
<head>
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$("#btnSayhello").click(function() {
const name = $("#txtName").val();
console.log(name);
$("#SayhelloDiv").html('loading....');
$.ajax({url: "https://:9000/graphql",
contentType: "application/json",type:'POST',
data: JSON.stringify({ query:`{
sayHello(name:"${name}")}`
}),
success: function(result) {
console.log(JSON.stringify(result))
$("#SayhelloDiv").html("<h1>"+result.data.sayHello +"</h1>");
}
});
});
$("#btnGreet").click(function() {
$("#greetingDiv").html('loading....');
//https://kannan-first-graphql-app.herokuapp.com/graphql
$.ajax({url: "https://:9000/graphql",
contentType: "application/json",
type:'POST',
data: JSON.stringify({
query:`{greeting}`
}),
success: function(result) {
$("#greetingDiv").html("<h1>"+result.data.greeting+"</h1>");
}
});
});
});
</script>
</head>
<body>
<h1>Jquery Client </h1>
<hr/>
<section>
<button id = "btnGreet">Greet</button>
<br/> <br/>
<div id = "greetingDiv"> </div>
</section>
<br/> <br/> <br/>
<hr/>
<section>
Enter a name:<input id = "txtName" type = "text" value = "kannan"/>
<button id = "btnSayhello">SayHello</button>
<div id = "SayhelloDiv"> </div>
</section>
</body>
</html>
在瀏覽器中開啟此檔案並單擊按鈕以檢視響應。輸出將如下所示 -