GraphQL - การรวม JQuery
เว็บแอปพลิเคชันส่งและดึงข้อมูลแบบอะซิงโครนัส (ในพื้นหลัง) AJAX อนุญาตให้เว็บไซต์โหลดเนื้อหาลงบนหน้าจอโดยไม่ต้องรีเฟรชหน้า jQuery มีวิธีการหลายอย่างสำหรับฟังก์ชัน AJAX ซึ่งทำให้การใช้งาน AJAX ง่ายขึ้น ในบทนี้เราจะเรียนรู้วิธีที่เราสามารถรวม GraphQL กับ jQuery
พิจารณาแอปพลิเคชันที่ใช้สถาปัตยกรรมไคลเอนต์เซิร์ฟเวอร์ เราสามารถสร้างหน้าเว็บส่วนหน้าที่ร้องขอข้อมูลจากเซิร์ฟเวอร์ GraphQL หน้าเว็บจะทำการเรียก AJAX โดยใช้ jQuery ไปยังเซิร์ฟเวอร์ GraphQL
ในการผสานรวม GraphQL กับ JQuery ให้เราตรวจสอบส่วนหัวของคำขอ GraphiQL และทำความเข้าใจกับพารามิเตอร์คำขอ
เริ่ม hello-worldแอพ (ดูบทที่ 6 สำหรับภาพประกอบที่เกี่ยวข้อง) พิมพ์คำค้นหา graphql {greeting} ในหน้าต่าง GraphiQL คลิกขวาและตรวจสอบหรือกด (ctrl + shift + I) บน chrome เพื่อไปที่แท็บเครือข่ายดังที่แสดงด้านล่าง -
จากที่เรียบง่าย hello-world ตัวอย่างเช่นเราสามารถเข้าใจได้ http method ใช้คือ POST. ตอนนี้ในเบราว์เซอร์ให้เลื่อนลงไปที่ส่วนหัวเพื่อดู น้ำหนักบรรทุกคำขอ
เมื่อคุณคลิกที่ view codeคุณจะเห็นสิ่งต่อไปนี้ในส่วนเพย์โหลดคำขอของ chrome
{"query":"{\n greeting\n}","variables":null,"operationName":null}
โปรดสังเกต URL ของคำขอด้วย http://localhost:9000/graphql ที่ควรเรียกจากแอปพลิเคชันไคลเอนต์
ภาพประกอบ
ให้เราเข้าใจวิธีการรวม GraphQL กับ JQuery โดยใช้กระบวนการที่ชาญฉลาด
การตั้งค่าเซิร์ฟเวอร์
เราจะเรียนรู้การตั้งค่าเซิร์ฟเวอร์โดยใช้ขั้นตอนต่อไปนี้ -
ขั้นตอนที่ 1 - ดาวน์โหลดและติดตั้งการอ้างอิงที่จำเป็นสำหรับโครงการ
สร้างโฟลเดอร์ชื่อ jquery-server-app. เปลี่ยนไดเร็กทอรีของคุณเป็น jquery-server-app จากเทอร์มินัล ทำตามขั้นตอนที่ 3 ถึง 5 ที่อธิบายไว้ในบทการตั้งค่าสภาพแวดล้อม
ขั้นตอนที่ 2 - สร้างสคีมา
เพิ่มไฟล์ schema.graphql ในโฟลเดอร์โครงการ jquery-server-app และเพิ่มรหัสต่อไปนี้ -
type Query
{
greeting: String
sayHello(name:String!):String
}
ไฟล์ได้กำหนดสองแบบสอบถาม greeting และ sayHello. แบบสอบถาม sayHello ยอมรับพารามิเตอร์สตริงและส่งคืนสตริงอื่น พารามิเตอร์ของฟังก์ชัน sayHello () ไม่เป็นโมฆะ
ขั้นตอนที่ 3 - สร้างตัวแก้ไข
สร้างไฟล์ 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เป็นตัวแก้ไขสองตัว ในตัวแก้ไข sayHello ค่าที่ส่งไปยังพารามิเตอร์ name สามารถเข้าถึงได้ผ่าน args ในการเข้าถึงฟังก์ชันตัวแก้ไขภายนอกโมดูลต้องส่งออกวัตถุแบบสอบถามโดยใช้module.exports.
ขั้นตอนที่ 4 - เรียกใช้แอปพลิเคชัน
สร้างไฟล์ server.js โปรดดูขั้นตอนที่ 8 ในบทการตั้งค่าสภาพแวดล้อม ดำเนินการคำสั่งnpm startในเทอร์มินัล เซิร์ฟเวอร์จะทำงานบนพอร์ต 9000 ที่นี่เราใช้ GraphiQL เป็นไคลเอนต์เพื่อทดสอบแอปพลิเคชัน
เปิดเบราว์เซอร์และพิมพ์ URL http://localhost: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 - สร้างหน้า HTML index.html สำหรับการรวม jQuery
เราจะสร้างแอปพลิเคชันไคลเอนต์ใน 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: "http://localhost: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: "http://localhost: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>
เปิดไฟล์นี้ในเบราว์เซอร์และคลิกที่ปุ่มเพื่อดูการตอบสนอง ผลลัพธ์จะเป็นไปตามที่ระบุด้านล่าง -