Khái niệm, ý tưởng, chiến lược
Khái niệm, ý tưởng, chiến lượcChiến lược cho phân cấp API

Chiến lược cho phân cấp API

Chúng ta có thể áp dụng các ý tưởng khác nhau để thiết lập phân cấp cho các endpoint API của mình.

Queries trước, ghi đè schema

Chúng ta có thể định nghĩa phần cha để chứa một GraphQL query chung, sau đó mở rộng nó cho từng ứng dụng khác nhau.

Ví dụ, persisted query cha /graphql-query/posts/ sẽ định nghĩa GraphQL query:

query GetPosts {
  posts {
    id
    title
    url
  }
}

Và các persisted queries con, dành cho website và ứng dụng di động, sẽ thiết lập schema configuration tương ứng:

  • /graphql-query/posts/website/ => sử dụng schema configuration "Website"
  • /graphql-query/posts/mobile-app/ => sử dụng schema configuration "Mobile app"

Schema trước, ghi đè queries

Ngoài ra, chúng ta có thể khai báo schema configuration ở cấp cha, và sau đó tất cả các con kế thừa nó và chỉ triển khai GraphQL query:

  • /graphql-query/mobile-app/posts/
  • /graphql-query/mobile-app/users/
  • /graphql-query/website/posts/
  • /graphql-query/website/users/

Dịch endpoint

Dịch nội dung trong một endpoint bằng cách cung cấp mã ngôn ngữ qua một biến, có thể được ghi đè bởi endpoint con.

Ví dụ, chúng ta có thể tạo một persisted query /graphql-query/posts/ với GraphQL query này:

query GetTranslatedPosts($lang: String!) {
  posts {
    title @strTranslate(from: "en", to: $lang)
    url
  }
}

Chúng ta không cần thực thi endpoint này trực tiếp, vì vậy nó có thể được vô hiệu hóa.

Sau đó, chúng ta tạo persisted query con /graphql-query/posts/french/, ghi đè biến GraphQL:

{
  "lang": "fr"
}