Я считаю, что решение 2 хорошо для реализации.
Я сделал аналогичную реализацию, но в моем случае сервис GraphQL извлекает данные из другого (нескольких) сервиса (ов) GraphQL.
И где-то вниз по линии я сделал что-то вроде этого:
export type serviceConnectionType = {
endpoint: string
queryType: {
query: Object // gql Object Query
variables: {
input: Object // query arguments (can be null)
}
}
}
export async function connectService(params: serviceConnectionType) {
const response = await fetch(params.endpoint, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(params.queryType),
})
if (response.status === 404) {
console.warn('404 not found')
}
return response.json()
}