GraphQL полагается (и светит из-за) отвечающих вложенных данных. Насколько я понимаю, CSV может отображать только пары плоских значений. Это делает CSV не очень подходящим для ответов GraphQL.
Я думаю, что самый простой способ добиться того, что вы хотите сделать, - это поставить клиент GraphQL перед своими клиентами:
+------+ csv +-------+ http/json +------+
|client|<----->|adapter|<----------->|server|
+------+ +-------+ +------+
Здесь хорошо то, что ваш адаптер должен был бы иметь возможность только переводить указанные запросы в CSV.
Очевидно, что вы не всегда сможете это сделать (но как вы заставляете их отправлять запросы GraphQL тогда? ). В качестве альтернативы вы можете создать промежуточное программное обеспечение, которое переводит JSON в CSV. Но тогда вам придется иметь дело со всей спецификацией GraphQL. Удачи в переводе этого ответа:
{
"__typename": "Query",
"someUnion": [
{ "__typename": "UnionA", "numberField": 1, "nested": [1, 2, 3, 4] },
{ "__typename": "UnionB", "stringField": "str" },
],
"otherField": 123.34
}
Так что, если вы не можете обойтись переносом CSV по HTTP, GraphQL - просто неправильный выбор, потому что он не был создан для этого. И если вы запретите те функции GraphQL, которые трудно перевести на CSV, у вас больше не будет GraphQL, поэтому нет смысла называть его GraphQL.