Я работаю над получением данных из API с помощью graphql-yoga и node-fetch (в node.js). Вот как выглядит мой код:
const {GraphQLServer} = require('graphql-yoga');
const fetch = require('node-fetch');
const typeDefs = `
type Query {
getTimeseries: Timeseries
}
type Timeseries {
end_date: String
start_date: String
}
`;
const resolvers = {
Query: {
getTimeseries: async (_, {}) => {
const response = await fetch(`https://fxmarketapi.com/apitimeseries?api_key=48Ki5q0sTKFQR3fuTvHw¤cy=EURUSD,GBPUSD&interval=daily&start_date=2020-04-30&end_date=2020-05-01&format=ohlc`);
return response.json();
},
},
};
const server = new GraphQLServer({
typeDefs,
resolvers
});
server.start(() => console.log('Server is running on localhost:4000'));
Данные, которые вы получаете при запуске данных из конечной точки API, которую я использую, показаны ниже:
{
"end_date": "2020-05-01",
"price": {
"2020-04-30": {
"EURUSD": {
"close": 1.09528,
"high": 1.09726,
"low": 1.08331,
"open": 1.08735
},
"GBPUSD": {
"close": 1.25951,
"high": 1.26432,
"low": 1.24292,
"open": 1.24671
}
},
"2020-05-03": {
"EURUSD": {
"close": 1.09802,
"high": 1.10152,
"low": 1.09348,
"open": 1.09528
},
"GBPUSD": {
"close": 1.24941,
"high": 1.25993,
"low": 1.24859,
"open": 1.25918
}
}
},
"start_date": "2020-04-30"
}
На данный момент, основываясь на моем коде выше, я могу получить только значения, содержащиеся в полях start_date
и end_date
, когда я запускаю свой запрос. Однако я не знаю, как создать определение типа для извлечения объекта под price
, потому что имена полей — это даты, и они меняются каждый день. Пожалуйста, помогите мне написать определение типа и преобразователь для запроса, который мы будем использовать для получения этих данных.
Ps: при запуске тестов вы можете столкнуться с некоторыми кодами ошибок. Это должно помочь вам понять, что это за ошибка:
202 - Requested currency code invalid or not in plan for Live and Convert Endpoints
203 - Requested currency code invalid or not in plan for the Historical, Change, Timeseries and Pandas Endpoints
301 - Invalid date type
302 - Requested date is a weekend applicable to Historical, Change, Timeseries and Pandas Endpoints
401 - Api_Key is invalid
501 - Requestout of Range
502 - Interval Parameters invalid
price: [{ date: '2020-04-30', rates: [{ currency: 'EURUSD', values: { close: 1.09528 } }] }
. Вы перебираете ключи объектаprice
и создаете соответствующий массив из значений. - person Daniel Rearden   schedule 05.05.2020