Nowym aby graphQL używam następujący schemat:Scalanie 2 punktów końcowych REST do jednej odpowiedzi GraphQL
type Item {
id: String,
valueA: Float,
valueB: Float
}
type Query {
items(ids: [String]!): [Item]
}
Moje API może zwracać wiele elementów na jednym żądanie każdego typu (A & B), ale nie dla obu, tj:
REST Zapytanie o TypeA: api/a/items?id=[1,2]
Response:
[
{"id":1,"value":100},
{"id":2,"value":30}
]
REST Wniosek o t ypeB: api/b/items?id=[1,2]
Response:
[
{"id":1,"value":50},
{"id":2,"value":20}
]
chciałbym połączyć te 2 punkty końcowe api w jednym graphQL Response tak:
[
{
id: "1",
valueA: 100,
valueB: 50
},
{
id: "2",
valueA: 30,
valueB: 20
}
]
Q: Jak można by napisać resolver, który uruchomi pobieranie pojedynczego dla każdego typu (uzyskiwanie odpowiedzi wielu elementów), upewniając się, że niepotrzebne pobieranie nie jest wyzwalane, gdy zapytanie jest brakuje tj typ:
{items(ids:["1","2"]) {
id
valueA
}}
Powyższy przykład powinien jedynie sprowadzić api/a/items?id=[1,2]
a odpowiedź graphQL powinno być:
[
{
id: "1",
valueA: 100
},
{
id: "2",
valueA: 30
}
]
Działa jak czar :) –