• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

API NBP - pobieranie kursów walut (3, 6 miesięcy, 1 rok)

VPS Starter Arubacloud
+1 głos
1,070 wizyt
pytanie zadane 25 sierpnia 2022 w JavaScript przez vishi7 Początkujący (430 p.)

Hej, 

Mam pytanie, na które nie mogę znaleźć odpowiedzi w dokumentacji samego NBP api. 

Jak najlepiej pobrać kursy z ostatniego np. pół roku? Z ostatnich 10 dni chyba najłatwiej zrobić to tak: https://api.nbp.pl/api/exchangerates/rates/a/gbp/last/10/?format=json, ale co w przypadku większego odstępu czasu np. roku. 

Trzeba robić to po przez dokładny przedział dat?

http://api.nbp.pl/api/exchangerates/rates/a/gbp/2022-02-26/2022-08-25/

Chcę zrobić wykresy używając Chart.js. Apke piszę w Reactcie.

import React, { useState, useEffect } from 'react';
import axios from 'axios';
import { useParams } from 'react-router-dom';
import {
  Chart as ChartJS,
  CategoryScale,
  LinearScale,
  PointElement,
  LineElement,
  Title,
  Tooltip,
  Legend,
} from 'chart.js';

import { Line } from 'react-chartjs-2';

ChartJS.register(
  CategoryScale,
  LinearScale,
  PointElement,
  LineElement,
  Title,
  Tooltip,
  Legend
);

const rate = axios.create({
  baseURL: 'http://api.nbp.pl/api/exchangerates/rates/a/',
});

const Chart = () => {
  const [post, setPost] = useState();
  const { id } = useParams();

  useEffect(() => {
    async function getPost() {
      const response = await rate.get(`/${id}/last/10/?format=json`);
      setPost(response.data);
    }
    getPost();
  }, [id]);

  const data = {
    type: 'line',
    labels: post?.rates?.map((x) => {
      const date = new Date(x.effectiveDate);

      return new Intl.DateTimeFormat('pl', {
        month: 'short',
        day: 'numeric',
      }).format(date);
    }),
    datasets: [
      {
        label: `10 dni`,
        data: post?.rates?.map((y) => y.mid),
        lineTension: 0.1,
        backgroundColor: 'rgba(15, 174, 150)',
        borderColor: 'rgba(15, 174, 150)',
        gridLines: 'false',
        borderCapStyle: 'butt',
        borderDash: [],
        borderDashOffset: 0.0,
        borderJoinStyle: 'miter',
        pointBorderColor: 'rgba(15, 174, 150)',
        pointBackgroundColor: '#fff',
        pointBorderWidth: 1,
        pointHoverRadius: 5,
        pointHoverBackgroundColor: 'rgba(15, 174, 150)',
        pointHoverBorderColor: 'rgba(220,220,220,1)',
        pointHoverBorderWidth: 2,
        pointRadius: 1,
        pointHitRadius: 10,
      },
    ],
    options: {
      responsive: true,
    },
  };

  return (
    <div
      style={{
        width: '800px',
        height: '800px',
        margin: '0px auto',
        paddingTop: '500px',
      }}
    >
      <Line data={data} />
    </div>
  );
};

export default Chart;

Z góry dziękuję za odpowiedzi :)

1 odpowiedź

0 głosów
odpowiedź 25 sierpnia 2022 przez mokrowski Mędrzec (156,260 p.)
wybrane 28 sierpnia 2022 przez vishi7
 
Najlepsza

Masz to w dokumentacji. Np. to:

https://api.nbp.pl/api/exchangerates/rates/a/gbp/2021-01-01/2021-01-31/?format=json

wydaje się być odpowiedzią na Twoje pytanie. Poza tym przeczytaj https://api.nbp.pl/ . Dane zwracane nie mogą obejmować więcej niż 93 dni.

komentarz 26 sierpnia 2022 przez PH03NIX Mądrala (6,130 p.)
Ale warto zaznaczyć, że dane z 93 dni można pobrać wielokrotnie, czyli teoretycznie można pobrać dane z dowolnej liczby dni.
komentarz 26 sierpnia 2022 przez mokrowski Mędrzec (156,260 p.)
Oczywiście. Chodzi tylko o to by nie budować "łakomego zapytania" bo... może być nieobsłużone.

Podobne pytania

+2 głosów
1 odpowiedź 608 wizyt
pytanie zadane 6 sierpnia 2023 w JavaScript przez El Lirón Obywatel (1,350 p.)
0 głosów
1 odpowiedź 2,166 wizyt
+1 głos
1 odpowiedź 2,917 wizyt

93,079 zapytań

142,043 odpowiedzi

321,452 komentarzy

62,424 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...