PHP Functions via Schema
ส่วนขยายนี้เพิ่มฟิลด์และไดเรกทิฟให้กับ GraphQL schema ซึ่งเปิดเผยฟังก์ชันการทำงานที่พบได้ทั่วไปในภาษาโปรแกรม (เช่น PHP)
คำอธิบาย
ฟิลด์ฟังก์ชันและไดเรกทิฟมีประโยชน์ในการจัดการข้อมูลหลังจากที่ดึงข้อมูลมาแล้ว ช่วยให้เราแปลงค่าฟิลด์ตามที่ต้องการ และมอบความสามารถในการนำเข้า/ส่งออกข้อมูลที่มีประสิทธิภาพ
queries ต่อไปนี้ ซึ่งประกอบด้วยฟิลด์ฟังก์ชันและไดเรกทิฟหลากหลาย:
{
_intAdd(add: 15, to: 56)
_intArraySum(array: [1, 2, 3, 4, 5])
_arrayJoin(array: ["Hello", "to", "everyone"], separator: " ")
_arrayItem(array: ["one", "two", "three", "four", "five"], position: 3)
_arraySearch(array: ["uno", "dos", "tres", "cuatro", "cinco"], element: "tres")
_arrayUnique(array: ["uno", "dos", "uno", "tres", "cuatro", "dos", "cinco", "dos"])
_arrayMerge(arrays: [["uno", "dos", "uno"], ["tres", "cuatro", "dos", "cinco", "dos"]])
_arrayDiff(arrays: [["uno", "dos"], ["tres", "cuatro", "dos"]])
_arrayAddItem(array: ["uno", "dos"], value: "tres")
_arraySetItem(array: ["uno", "dos"], index: 0, value: "tres")
_arrayKeys(array: ["uno", "dos", "tres"])
_arrayLength(array: ["uno", "dos", "tres"])
_strRegexFindMatches(regex: "/https?:\\/\\/([a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\\.[a-zA-Z]{2,})/", string: "In website https://gatographql.com there is more information")
_strReplace(search: "https://", replaceWith: "http://", in: "https://gatographql.com")
_strReplaceMultiple(search: ["https://", "gato"], replaceWith: ["http://", "dog"], in: "https://gatographql.com")
_strRegexReplace(searchRegex: "/^https?:\\/\\//", replaceWith: "", in: "https://gatographql.com")
_strRegexReplaceMultiple(searchRegex: ["/^https?:\\/\\//", "/([a-z]*)/"], replaceWith: ["", "$1$1"], in: "https://gatographql.com")
_strStartsWith(search: "orld", in: "Hello world")
_strEndsWith(search: "orld", in: "Hello world")
_strUpperCase(text: "Hello world")
_strLowerCase(text: "Hello world")
_strTitleCase(text: "Hello world")
falseToTrue: _echo(value: false) @boolOpposite
trueToFalse: _echo(value: true) @boolOpposite
plusOne: _echo(value: 2) @intAdd(number: 1)
objectAddEntry: _echo(value: {
user: "Leo",
contact: {
email: "leo@test.com"
}
})
@objectAddEntry(key: "phone", value: "+0929094229", underPath: "contact")
@objectAddEntry(key: "methods", value: {}, underPath: "contact")
@objectAddEntry(key: "card", value: true, underPath: "contact.methods")
upperCase: _echo(value: "Hello world") @strUpperCase
lowerCase: _echo(value: "Hello world") @strLowerCase
titleCase: _echo(value: "Hello world") @strTitleCase
append: _echo(value: "Hello world") @strAppend(string: "!!!")
prepend: _echo(value: "Hello world") @strPrepend(string: "!!!")
arraySplice: _echo(value: ["uno", "dos", "tres"]) @arraySplice(offset: 1)
arraySpliceWithLength: _echo(value: ["uno", "dos", "tres"]) @arraySplice(offset: 1, length: 1)
arraySpliceWithReplacement: _echo(value: ["uno", "dos", "tres"]) @arraySplice(offset: 1, replacement: ["cuatro", "cinco"])
arraySpliceWithLengthAndReplacement: _echo(value: ["uno", "dos", "tres"]) @arraySplice(offset: 1, length: 1, replacement: ["cuatro", "cinco"])
arrayUnique: _echo(value: ["uno", "dos", "uno", "tres", "cuatro", "dos", "cinco", "dos"]) @arrayUnique
arrayMerge: _echo(value: ["uno", "dos", "uno"]) @arrayMerge(with: ["tres", "cuatro", "dos", "cinco", "dos"])
arrayDiff: _echo(value: ["uno", "dos"]) @arrayDiff (against: ["tres", "cuatro", "dos"])
arrayFilter: _echo(value: ["uno", "dos", null, "tres", "", "dos", []]) @arrayFilter
objectKeepProperties: _echo(value: { user: "Leo", email: "leo@test.com" } )
@objectKeepProperties(
keys: ["user"]
)
}...ให้ผลลัพธ์:
{
"data": {
"_intAdd": 71,
"_intArraySum": 15,
"_arrayJoin": "Hello to everyone",
"_arrayItem": "four",
"_arraySearch": 2,
"_arrayUnique": [
"uno",
"dos",
"tres",
"cuatro",
"cinco"
],
"_arrayMerge": [
"uno",
"dos",
"uno",
"tres",
"cuatro",
"dos",
"cinco",
"dos"
],
"_arrayDiff": [
"uno"
],
"_arrayAddItem": [
"uno",
"dos",
"tres"
],
"_arraySetItem": [
"tres",
"dos"
],
"_arrayKeys": [
0,
1,
2
],
"_arrayLength": 3,
"_strRegexFindMatches": [
[
"https:\/\/gatographql.com"
],
[
"gatographql.com"
]
],
"_strReplace": "http://gatographql.com",
"_strReplaceMultiple": "http://doggraphql.com",
"_strRegexReplace": "gatographql.com",
"_strRegexReplaceMultiple": "gatographqlgatographql.comcom",
"_strStartsWith": false,
"_strEndsWith": true,
"_strUpperCase": "HELLO WORLD",
"_strLowerCase": "hello world",
"_strTitleCase": "Hello World",
"falseToTrue": true,
"trueToFalse": false,
"plusOne": 3,
"objectAddEntry": {
"user": "Leo",
"contact": {
"email": "leo@test.com",
"phone": "+0929094229",
"methods": {
"card": true
}
}
},
"upperCase": "HELLO WORLD",
"lowerCase": "hello world",
"titleCase": "Hello World",
"append": "Hello world!!!",
"prepend": "!!!Hello world",
"arraySplice": [
"uno"
],
"arraySpliceWithLength": [
"uno",
"tres"
],
"arraySpliceWithReplacement": [
"uno",
"cuatro",
"cinco"
],
"arraySpliceWithLengthAndReplacement": [
"uno",
"cuatro",
"cinco",
"tres"
],
"arrayUnique": [
"uno",
"dos",
"tres",
"cuatro",
"cinco"
],
"arrayMerge": [
"uno",
"dos",
"uno",
"tres",
"cuatro",
"dos",
"cinco",
"dos"
],
"arrayDiff": [
"uno"
],
"arrayFilter": [
"uno",
"dos",
"tres",
"dos"
],
"objectKeepProperties": {
"user": "Leo"
}
}
}ฟิลด์ฟังก์ชัน
ฟิลด์ฟังก์ชันเป็น Global Fields จึงถูกเพิ่มเข้าไปในทุกประเภทใน GraphQL schema: ทั้งใน QueryRoot รวมถึง Post, User และอื่นๆ
ต่อไปนี้คือรายการฟิลด์ฟังก์ชัน
_and
คืนค่าผลลัพธ์การดำเนินการ AND ของคุณสมบัติบูลีนหลายรายการ
_arrayAddItem
เพิ่มองค์ประกอบเข้าไปในอาร์เรย์
_arrayCombine
สร้าง JSON object โดยใช้องค์ประกอบจากอาร์เรย์หนึ่งเป็นคีย์ และองค์ประกอบจากอาร์เรย์อื่นเป็นค่า
_arrayChunk
แบ่งอาร์เรย์ออกเป็นส่วนๆ
_arrayDiff
คืนค่าอาร์เรย์ที่ประกอบด้วยองค์ประกอบทั้งหมดจากอาร์เรย์แรกที่ไม่มีอยู่ในอาร์เรย์อื่นๆ
_arrayEncodeAsJSONString
เข้ารหัสอาร์เรย์เป็น JSON string
_arrayFill
สร้างอาร์เรย์ที่เติมด้วยค่า
_arrayFilter
กรององค์ประกอบที่เป็น null หรือว่างเปล่าออกจากอาร์เรย์
_arrayFlipToObject
สลับคีย์ตัวเลขทั้งหมดกับค่าที่เกี่ยวข้องในอาร์เรย์ คืนค่าเป็น object
_arrayInnerJoinJSONObjectProperties
เติม JSON object ภายในอาร์เรย์เป้าหมายด้วยคุณสมบัติจาก JSON object ในอาร์เรย์ต้นทาง เมื่อคุณสมบัติหนึ่งมีค่าเหมือนกันในทั้งสอง object
_arrayItem
เข้าถึงองค์ประกอบที่ตำแหน่งที่กำหนดในอาร์เรย์
_arrayJoin
รวมสตริงทั้งหมดในอาร์เรย์โดยใช้ตัวคั่นที่กำหนด
_arrayKeys
คีย์ในอาร์เรย์
_arrayLength
จำนวนองค์ประกอบในอาร์เรย์
_arrayMerge
รวมอาร์เรย์สองรายการขึ้นไปเข้าด้วยกัน
_arrayPad
เติมอาร์เรย์ให้มีความยาวตามที่กำหนดด้วยค่า
_arrayRandom
สุ่มเลือกองค์ประกอบหนึ่งรายการจากรายการที่ให้มา
_arrayRemoveFirst
ลบองค์ประกอบแรกในอาร์เรย์
_arrayRemoveLast
ลบองค์ประกอบสุดท้ายในอาร์เรย์
_arrayReverse
กลับลำดับอาร์เรย์
_arraySearch
ค้นหาตำแหน่งขององค์ประกอบในอาร์เรย์ หากพบจะคืนค่าตำแหน่ง มิฉะนั้นคืนค่า false
_arraySetItem
กำหนดองค์ประกอบที่ตำแหน่งหนึ่งของอาร์เรย์
_arraySlice
ตัดส่วนหนึ่งของอาร์เรย์ออกมา
_arraySplice
ลบส่วนหนึ่งของอาร์เรย์และแทนที่ด้วยสิ่งอื่น
_arrayUnique
กรององค์ประกอบที่ซ้ำกันทั้งหมดออกจากอาร์เรย์
_date
คืนค่าสตริงที่จัดรูปแบบตาม format string ที่กำหนด โดยใช้ timestamp (Unix timestamp) จำนวนเต็มที่กำหนด หรือเวลาปัจจุบันหากไม่มี timestamp กล่าวอีกนัยหนึ่ง timestamp เป็นตัวเลือกและค่าเริ่มต้นคือค่าของ time() (ให้มาผ่านฟิลด์ _time)
_echo
ส่งคืนอินพุตตามที่รับมา ไม่ว่าจะเป็นอะไรก็ตาม
_equals
ระบุว่าผลลัพธ์จากฟิลด์เท่ากับค่าหนึ่งหรือไม่
_floatCeil
ปัดเศษตัวเลขขึ้นเป็นจำนวนเต็มถัดไปที่สูงกว่า
_floatDivide
หารตัวเลขด้วยตัวเลขอื่น
_greaterThan
ระบุว่า number1 > number2 หรือไม่
_greaterThanOrEquals
ระบุว่า number1 >= number2 หรือไม่
_if
หากคุณสมบัติบูลีนเป็น true ให้ดำเนินการฟิลด์หนึ่ง มิฉะนั้นให้ดำเนินการอีกฟิลด์หนึ่ง
_inArray
ระบุว่าอาร์เรย์มีค่านั้นหรือไม่
_intAdd
บวกจำนวนเต็มกับจำนวนเต็มอื่น
_intArraySum
ผลรวมขององค์ประกอบจำนวนเต็มในอาร์เรย์
_intMultiply
คูณจำนวนเต็มกับจำนวนเต็มอื่น
_intSubtract
ลบจำนวนเต็มออกจากจำนวนเต็มอื่น
_isEmpty
ระบุว่าค่าว่างเปล่าหรือไม่
_isNull
ระบุว่าค่าเป็น null หรือไม่
_lowerThan
ระบุว่า number1 < number2 หรือไม่
_lowerThanOrEquals
ระบุว่า number1 <= number2 หรือไม่
_makeTime
คืนค่า Unix timestamp ที่สอดคล้องกับอาร์กิวเมนต์ที่กำหนด timestamp นี้เป็นจำนวนเต็มขนาดใหญ่ที่ประกอบด้วยจำนวนวินาทีระหว่าง Unix Epoch (1 มกราคม 1970 00:00:00 GMT) กับเวลาที่กำหนด
อาร์กิวเมนต์ที่เป็นตัวเลือกซึ่งถูกละเว้นหรือเป็น null จะถูกกำหนดเป็นค่าปัจจุบันตามวันที่และเวลาท้องถิ่น
_not
คืนค่าตรงข้ามของคุณสมบัติบูลีน
_notEmpty
ระบุว่าค่าไม่ว่างเปล่าหรือไม่
_notEquals
ค่าสองค่าไม่เท่ากันหรือไม่
_notInArray
ระบุว่าอาร์เรย์ไม่มีค่านั้นหรือไม่
_notNull
ระบุว่าค่าไม่ใช่ null หรือไม่
_objectAddEntry
เพิ่ม entry เข้าไปใน object
_objectEncodeAsJSONString
เข้ารหัส object เป็น JSON string
_objectFilter
กรององค์ประกอบที่เป็น null หรือว่างเปล่าออกจาก object
_objectFlip
สลับคีย์และค่าใน JSON object
_objectIntersectKey
คำนวณส่วนที่ตัดกันของ object โดยใช้คีย์เป็นเกณฑ์เปรียบเทียบ
_objectKeepProperties
เก็บเฉพาะคุณสมบัติที่กำหนดใน JSON object
_objectMerge
รวม object สองรายการขึ้นไปเข้าด้วยกัน
_objectProperties
ดึงคุณสมบัติใน JSON object
_objectProperty
ดึงคุณสมบัติจาก JSON object
_objectRemoveEntry
ลบ entry ออกจาก JSON object
_objectRemoveProperties
ลบ entry หนึ่งรายการขึ้นไปออกจาก JSON object
_objectValues
ดึงค่าใน JSON object
_or
คืนค่าผลลัพธ์การดำเนินการ OR ของคุณสมบัติบูลีนหลายรายการ
_propertyExistsInJSONObject
ระบุว่าคุณสมบัติมีอยู่ใน JSON object หรือไม่
_propertyIsSetInJSONObject
ระบุว่าคุณสมบัติมีอยู่และไม่เป็น null ใน JSON object หรือไม่
_sprintf
แทนที่ placeholder ภายในสตริงด้วยค่าที่กำหนด
_strAppend
ต่อสตริงเข้าท้ายสตริงอื่น
_strArrayReplace
แทนที่สตริงด้วยสตริงอื่นในอาร์เรย์
_strArrayReplaceMultiple
แทนที่รายการสตริงด้วยรายการสตริงอื่นในอาร์เรย์
_strContains
ระบุว่าสตริงมีสตริงอื่นอยู่หรือไม่
_strDecodeJSONObject
ถอดรหัสสตริงเป็น JSON object หรือคืนค่า null หากไม่สามารถทำได้
_strDecodeList
ถอดรหัสสตริงเป็นอาร์เรย์ (ของประเภทใดก็ได้) หรือคืนค่า null หากไม่สามารถทำได้
_strEndsWith
ระบุว่าสตริงลงท้ายด้วยสตริงอื่นหรือไม่
_strLength
ความยาวของสตริง
_strLowerCase
แปลงสตริงเป็นตัวพิมพ์เล็ก
_strPad
เติมสตริงให้มีความยาวที่กำหนดด้วยสตริงอื่น
_strPos
ตำแหน่งของ substring ภายในสตริง หรือ null หากไม่พบ
_strRegexFindMatches
ดำเนินการ regular expression เพื่อดึงการจับคู่ทั้งหมดจากสตริง
_strRegexReplace
ดำเนินการ regular expression เพื่อค้นหาและแทนที่สตริง
_strRegexReplaceMultiple
ดำเนินการ regular expressions เพื่อค้นหาและแทนที่สตริง
_strRepeat
ทำซ้ำสตริง
_strReplace
แทนที่สตริงด้วยสตริงอื่น
_strReplaceMultiple
แทนที่รายการสตริงด้วยรายการสตริงอื่น
_strReverse
กลับลำดับสตริง
_strShuffle
สับเปลี่ยนสตริงแบบสุ่ม
_strStartsWith
ระบุว่าสตริงเริ่มต้นด้วยสตริงอื่นหรือไม่
_strStripSlashes
คืนค่าสตริงที่ถูกลบ backslash ออก (\' กลายเป็น ' และต่อๆ ไป) Double backslash (\\) กลายเป็น single backslash (\)
_strSubstr
คืนค่าส่วนหนึ่งของสตริง
_strTitleCase
แปลงสตริงเป็น title case
_strToTime
แปลงคำอธิบายวันเวลาในรูปแบบข้อความเป็น Unix timestamp
_strTrim
ลบช่องว่าง (หรืออักขระอื่นๆ) จากต้นและท้ายของสตริง
_strUpperCase
แปลงสตริงเป็นตัวพิมพ์ใหญ่
_strWordCount
จำนวนคำในสตริง
_time
คืนค่าเวลาปัจจุบัน
ไดเรกทิฟฟังก์ชัน
ต่อไปนี้คือรายการไดเรกทิฟฟังก์ชัน
@arrayAddItem
เพิ่มองค์ประกอบเข้าไปในอาร์เรย์
@arrayDiff
คำนวณความแตกต่างกับอาร์เรย์อื่น
@arrayFilter
กรององค์ประกอบที่เป็น null หรือว่างเปล่าออกจากอาร์เรย์
@arrayMerge
รวมอาร์เรย์กับอาร์เรย์อื่น
@arrayPad
เติมอาร์เรย์ให้มีความยาวตามที่กำหนดด้วยค่า
@arrayRemoveFirst
ลบองค์ประกอบแรกในอาร์เรย์
@arrayRemoveLast
ลบองค์ประกอบสุดท้ายในอาร์เรย์
@arrayReverse
กลับลำดับอาร์เรย์
@arraySetItem
กำหนดองค์ประกอบที่ตำแหน่งหนึ่งของอาร์เรย์
@arraySlice
ตัดส่วนหนึ่งของอาร์เรย์ออกมา
@arraySplice
ลบส่วนหนึ่งของอาร์เรย์และแทนที่ด้วยสิ่งอื่น
@arrayUnique
กรององค์ประกอบที่ซ้ำกันทั้งหมดออกจากอาร์เรย์
@boolOpposite
แปลงบูลีนเป็นค่าตรงข้าม
@floatDivide
หารค่าฟิลด์ด้วยตัวเลข float
@intAdd
บวกจำนวนเต็มเข้ากับค่าฟิลด์
@intMultiply
คูณจำนวนเต็มกับค่าฟิลด์
@intSubtract
ลบจำนวนเต็มออกจากค่าฟิลด์
@objectAddEntry
เพิ่ม entry เข้าไปใน JSON object
@objectFilter
กรององค์ประกอบที่เป็น null หรือว่างเปล่าออกจาก object
@objectKeepProperties
เก็บเฉพาะคุณสมบัติที่กำหนดจาก JSON object
@objectRemoveEntry
ลบ entry ออกจาก JSON object
@objectRemoveProperties
ลบคุณสมบัติที่กำหนดออกจาก JSON object
@setNull
กำหนดค่าฟิลด์เป็น null
@strAppend
ต่อสตริงเข้าท้ายสตริงในค่าฟิลด์
@strLowerCase
แปลงสตริงเป็นตัวพิมพ์เล็ก
@strPad
เติมสตริงให้มีความยาวที่กำหนดด้วยสตริงอื่น
@strPrepend
ต่อสตริงเข้าต้นสตริงในค่าฟิลด์
@strRegexReplace
ดำเนินการ regular expression เพื่อค้นหาและแทนที่สตริง (ดู เอกสารสำหรับฟังก์ชัน PHP preg_replace)
@strRegexReplaceMultiple
ดำเนินการ regular expressions เพื่อค้นหาและแทนที่รายการสตริง (ดู เอกสารสำหรับฟังก์ชัน PHP preg_replace)
@strRepeat
ทำซ้ำสตริง
@strReplace
แทนที่สตริงด้วยสตริงอื่น
@strReplaceMultiple
แทนที่รายการสตริงด้วยรายการสตริงอื่น
@strReverse
กลับลำดับสตริง
@strShuffle
สับเปลี่ยนสตริงแบบสุ่ม
@strStripSlashes
คืนค่าสตริงที่ถูกลบ backslash ออก (\' กลายเป็น ' และต่อๆ ไป) Double backslash (\\) กลายเป็น single backslash
@strSubstr
คืนค่าส่วนหนึ่งของสตริง
@strTitleCase
แปลงสตริงเป็น title case
@strTrim
ลบช่องว่าง (หรืออักขระอื่นๆ) จากต้นและท้ายของสตริง
@strUpperCase
แปลงสตริงเป็นตัวพิมพ์ใหญ่
ตัวอย่าง
ฟิลด์ฟังก์ชัน
แม้เราจะมีฟิลด์ Post.hasComments แต่อาจต้องการค่าตรงข้าม แทนที่จะสร้างฟิลด์ใหม่ Post.notHasComments (ซึ่งต้องแก้ไขโค้ด PHP) เราสามารถใช้ฟีเจอร์ Field to Input เพื่อนำค่าจาก hasComments ใส่เข้าไปในฟิลด์ not ทำให้คำนวณค่าใหม่ได้ตลอดเวลาภายใน GraphQL query:
{
posts {
id
hasComments
notHasComments: _not(value: $__hasComments)
}
}เราสามารถนำฟิลด์ฟังก์ชันมาใช้หลายครั้งเพื่อการคำนวณที่ซับซ้อนขึ้น เช่น การสร้างฟิลด์ summary จากค่าของฟิลด์อื่นๆ:
{
posts {
id
content @remove
shortContent: _strSubstr(string: $__content, offset: 0, length: 150) @remove
excerpt @remove
isExcerptEmpty: _isEmpty(value: $__excerpt) @remove
summary: _if(
condition: $__isExcerptEmpty
then: $__content
else: $__excerpt
)
}
}เมื่อใช้ร่วมกับส่วนขยาย HTTP Client เราสามารถสร้าง API endpoint ที่จะเชื่อมต่อแบบไดนามิก (ตามข้อมูลในไซต์ของเรา) แล้วดึงข้อมูลเฉพาะบางส่วนจากข้อมูลที่ได้รับกลับมา:
{
users(
pagination: { limit: 2 },
sort: { order: ASC, by: ID }
) {
id
# Dynamically generate endpoint for the user
endpoint: _arrayJoin(values: [
"https://newapi.getpop.org/wp-json/wp/v2/users/",
$__id,
"?_fields=name,avatar_urls"
])
# Retrieve the endpoint data
endpointData: _sendJSONObjectItemHTTPRequest(input: { url: $__endpoint } )
# Extract specific information
userAvatar: _objectProperty(
object: $__endpointData,
by: {
path: "avatar_urls.48"
}
)
}
}...ให้ผลลัพธ์:
{
"data": {
"users": [
{
"id": 1,
"endpoint": "https://newapi.getpop.org/wp-json/wp/v2/users/1?_fields=name,avatar_urls",
"endpointData": {
"name": "leo",
"avatar_urls": {
"24": "https://secure.gravatar.com/avatar/b28085726ee66e49f08be16ad668efd5?s=24&d=mm&r=g",
"48": "https://secure.gravatar.com/avatar/b28085726ee66e49f08be16ad668efd5?s=48&d=mm&r=g",
"96": "https://secure.gravatar.com/avatar/b28085726ee66e49f08be16ad668efd5?s=96&d=mm&r=g"
},
"_links": {
"self": [
{
"href": "https://newapi.getpop.org/wp-json/wp/v2/users/1"
}
],
"collection": [
{
"href": "https://newapi.getpop.org/wp-json/wp/v2/users"
}
]
}
},
"userAvatar": "https://secure.gravatar.com/avatar/b28085726ee66e49f08be16ad668efd5?s=48&d=mm&r=g"
},
{
"id": 2,
"endpoint": "https://newapi.getpop.org/wp-json/wp/v2/users/2?_fields=name,avatar_urls",
"endpointData": {
"name": "themedemos",
"avatar_urls": {
"24": "https://secure.gravatar.com/avatar/7554514b65216821eeacde0fdcd6c6e6?s=24&d=mm&r=g",
"48": "https://secure.gravatar.com/avatar/7554514b65216821eeacde0fdcd6c6e6?s=48&d=mm&r=g",
"96": "https://secure.gravatar.com/avatar/7554514b65216821eeacde0fdcd6c6e6?s=96&d=mm&r=g"
},
"_links": {
"self": [
{
"href": "https://newapi.getpop.org/wp-json/wp/v2/users/2"
}
],
"collection": [
{
"href": "https://newapi.getpop.org/wp-json/wp/v2/users"
}
]
}
},
"userAvatar": "https://secure.gravatar.com/avatar/7554514b65216821eeacde0fdcd6c6e6?s=48&d=mm&r=g"
}
]
}
}ไดเรกทิฟฟังก์ชัน
หาก query นี้:
query {
posts {
title
}
}...ให้ผลลัพธ์ดังนี้:
{
"data": {
"posts": [
{
"title": "Hello world!"
},
{
"title": "lovely weather"
}
]
}
}...แล้ว query นี้:
query {
posts {
title @strUpperCase
}
}...จะให้ผลลัพธ์:
{
"data": {
"posts": [
{
"title": "HELLO WORLD!"
},
{
"title": "LOVELY WEATHER"
}
]
}
}