Cấu hình schema
Cấu hình schemaTruy vấn các trường 'self'

Truy vấn các trường 'self'

Đôi khi chúng ta cần thay đổi hình dạng của phản hồi, để mô phỏng phản hồi tương tự từ một máy chủ GraphQL khác, hoặc từ REST API.

Chúng ta có thể thực hiện điều này thông qua trường self, được thêm vào tất cả các kiểu trong schema GraphQL, trường này phản chiếu lại chính đối tượng mà nó được áp dụng:

type QueryRoot {
  self: QueryRoot!
}
 
type Post {
  self: Post!
}
 
type User {
  self: User!
}

Cách hoạt động

Trường self cho phép thêm các cấp độ phụ vào query mà không rời khỏi đối tượng đang được truy vấn. Khi chạy query này:

{
  __typename
  self {
    __typename
  }
  
  post(by: {id: 1}) {
    self {
      id
      __typename
    }
  }
  
  user(by: {id: 1}) {
    self {
      id
      __typename
    }
  }
}

...sẽ tạo ra phản hồi này:

{
  "data": {
    "__typename": "QueryRoot",
    "self": {
      "__typename": "QueryRoot"
    },
    "post": {
      "self": {
        "id": 1,
        "__typename": "Post"
      }
    },
    "user": {
      "self": {
        "id": 1,
        "__typename": "User"
      }
    }
  }
}

Cách sử dụng

Dùng self để giả tạo thêm các cấp độ phụ cần thiết cho phản hồi, và dùng bí danh trường để đặt tên lại cho các cấp độ đó một cách phù hợp.

Ví dụ, query này tái tạo hình dạng của một máy chủ GraphQL khác:

{
  categories: self {
    edges: postCategories {
      node: self {
        name
        slug
      }
    }
  }
}

Query này tái tạo hình dạng của WP REST API:

{
  post(by: {id: 1}) {
    content: self {
      rendered: content
    }
  }
}

Thêm các trường self vào endpoint

Việc thêm các trường self vào schema có thể được cấu hình như sau, theo thứ tự ưu tiên:

✅ Chế độ cụ thể cho custom endpoint hoặc persisted query, được định nghĩa trong cấu hình schema

Thêm các trường self vào schema, được thiết lập trong cấu hình Schema

✅ Chế độ mặc định, được định nghĩa trong Cài đặt

Nếu cấu hình schema có giá trị "Default", nó sẽ sử dụng chế độ được định nghĩa trong Cài đặt:

Thiết lập các trường self cho cấu hình schema, trong Cài đặt
Thiết lập các trường self cho cấu hình schema, trong Cài đặt

Khi nào nên sử dụng

Trường self có thể được dùng để điều chỉnh hình dạng của phản hồi GraphQL cho phù hợp với một hình dạng cụ thể được yêu cầu, chẳng hạn như hình dạng từ một máy chủ GraphQL khác, hoặc từ REST API.