
คุณสมบัติ:
ฟังก์ชันสคีมา
ฟังก์ชันสคีมา
สคีมา GraphQL มีฟิลด์และไดเรกทีฟที่เปิดเผยฟังก์ชันการทำงานจากภาษาโปรแกรม PHP
ฟิลด์ฟังก์ชัน
ฟิลด์ฟังก์ชันเป็น Global Fields ดังนั้นจึงถูกเพิ่มลงในทุกประเภทในสคีมา GraphQL ทั้งใน QueryRoot รวมถึง Post, User และอื่นๆ
ฟิลด์ฟังก์ชันมีประโยชน์สำหรับการจัดการข้อมูลหลังจากที่ดึงมาแล้ว ช่วยให้เราสามารถแปลงค่าของฟิลด์ตามที่ต้องการ และมอบความสามารถในการนำเข้า/ส่งออกข้อมูลที่มีประสิทธิภาพสูง
ตัวอย่างเช่น เมื่อเรามีฟิลด์ Post.hasComments แต่ต้องการค่าตรงข้าม แทนที่จะสร้างฟิลด์ใหม่ Post.notHasComments (ซึ่งต้องแก้ไขโค้ด PHP) เราสามารถใช้ฟีเจอร์ Field to Input เพื่อป้อนค่าจาก hasComments เข้าไปในฟิลด์ not และคำนวณค่าใหม่ภายใน GraphQL query เสมอ:
query {
posts {
id
hasComments
notHasComments: _not(value: $__hasComments)
}
}ไดเรกทีฟฟังก์ชัน
สคีมา GraphQL มีไดเรกทีฟที่เปิดเผยฟังก์ชันการทำงานที่พบได้ทั่วไปในภาษาโปรแกรม (เช่น PHP)
ฟิลด์ไดเรกทีฟมีประโยชน์สำหรับการจัดการข้อมูลหลังจากที่ดึงมาแล้ว ช่วยให้เราสามารถแปลงค่าของฟิลด์ตามที่ต้องการ และมอบความสามารถในการนำเข้า/ส่งออกข้อมูลที่มีประสิทธิภาพสูง
ตัวอย่างเช่น queries นี้:
query {
posts {
title @strUpperCase
}
}...จะสร้างการตอบสนองดังนี้:
{
"data": {
"posts": [
{
"title": "HELLO WORLD!"
},
{
"title": "LOVELY WEATHER"
}
]
}
}ฟิลด์ช่วยเหลือ
สคีมา GraphQL มีฟิลด์ที่เพิ่มเข้ามาเพื่อให้ฟังก์ชันช่วยเหลือที่ใช้บ่อย
ฟิลด์ช่วยเหลือเป็น Global Fields ดังนั้นจึงถูกเพิ่มลงในทุกประเภทในสคีมา GraphQL ทั้งใน QueryRoot รวมถึง Post, User และอื่นๆ
ใน queries นี้ เราดึง ID ของผู้ใช้ในเว็บไซต์และดำเนินการ GraphQL query ใหม่โดยส่ง ID ของพวกเขาเป็นพารามิเตอร์:
query {
users {
userID: id
url: _urlAddParams(
url: "https://somewebsite/endpoint/user-data",
params: {
userID: $__userID
}
)
headers: _httpRequestHeaders
headerNameValueEntryList: _objectConvertToNameValueEntryList(
object: $__headers
)
_sendHTTPRequest(input: {
url: $__url
options: {
headers: $__headerNameValueEntryList
}
}) {
statusCode
contentType
body
}
}
}ฟิลด์สภาพแวดล้อม
สคีมา GraphQL มีฟิลด์ global _env ซึ่งช่วยให้ดึงค่าจากตัวแปรสภาพแวดล้อม หรือจาก PHP constant (โดยทั่วไปกำหนดใน wp-config.php แต่สามารถกำหนดที่อื่นได้เช่นกัน)
queries นี้ดึงค่า environment constant GITHUB_ACCESS_TOKEN ที่เราอาจตั้งค่าเพื่อเข้าถึง private repository บน GitHub:
query {
githubAccessToken: _env(name: "GITHUB_ACCESS_TOKEN")
}