Logo

คุณสมบัติ:

ฟังก์ชันสคีมา

ฟังก์ชันสคีมา

สคีมา 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")
}

สมัครรับจดหมายข่าวของเรา

ติดตามการอัปเดตทั้งหมดของ Gato GraphQL