Utilizando o Web Service da Taxa PTAX do Banco Central: Exemplos em Python, PHP, C#, e Node.js com React e Bootstrap

A API do Banco Central do Brasil oferece acesso às cotações de diversas moedas utilizando a taxa PTAX. Neste artigo, exploraremos como consumir essa API em diferentes linguagens de programação e frameworks, incluindo um exemplo completo em Node.js com React e Bootstrap para exibir as cotações dos últimos 10 anos.

1. Acessando a API da PTAX

A API do Banco Central pode ser acessada através da seguinte URL base:

https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/

Um exemplo de consulta à cotação do dólar no último dia útil:

https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoDolarDia(dataCotacao=@dataCotacao)?@dataCotacao='12-31-2023'&$top=100&$format=json

A resposta virá no formato JSON, que pode ser facilmente consumido por várias linguagens de programação.

2. Exemplos de Código

2.1 Python

Vamos usar a biblioteca requests para fazer a consulta.

import requests

url = "https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoDolarDia(dataCotacao=@dataCotacao)?@dataCotacao='12-31-2023'&$format=json"
response = requests.get(url)
data = response.json()

for item in data['value']:
    print(f"Data: {item['dataHoraCotacao']}, Valor: {item['cotacaoCompra']}")

2.2 PHP

Aqui usamos o cURL para fazer a requisição à API.

<?php
$url = "https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoDolarDia(dataCotacao=@dataCotacao)?@dataCotacao='12-31-2023'&\$format=json";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);

$data = json_decode($response, true);
foreach ($data['value'] as $item) {
    echo "Data: " . $item['dataHoraCotacao'] . " - Valor: " . $item['cotacaoCompra'] . "<br>";
}
?>

2.3 C

Utilizando a biblioteca HttpClient para realizar a requisição.

using System;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;

class Program
{
    static async Task Main(string[] args)
    {
        string url = "https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoDolarDia(dataCotacao=@dataCotacao)?@dataCotacao='12-31-2023'&$format=json";
        using HttpClient client = new HttpClient();
        string response = await client.GetStringAsync(url);
        JObject data = JObject.Parse(response);

        foreach (var item in data["value"])
        {
            Console.WriteLine($"Data: {item["dataHoraCotacao"]}, Valor: {item["cotacaoCompra"]}");
        }
    }
}

3. Exemplo com Node.js, React e Bootstrap

Este exemplo mostrará uma página em React e Bootstrap que exibe as cotações PTAX dos últimos 10 anos.

Backend (Node.js)

const express = require('express');
const axios = require('axios');
const app = express();

app.get('/api/ptax', async (req, res) => {
    try {
        const response = await axios.get(`https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoDolarPeriodo(dataInicial=@dataInicial,dataFinal=@dataFinal)?@dataInicial='2013-01-01'&@dataFinal='2023-12-31'&$format=json`);
        res.json(response.data);
    } catch (error) {
        res.status(500).json({ error: "Erro ao buscar dados" });
    }
});

app.listen(3001, () => {
    console.log("Servidor rodando na porta 3001");
});

Frontend (React + Bootstrap)

Aqui está o código React para renderizar os dados em uma tabela estilizada com Bootstrap.

import React, { useEffect, useState } from 'react';
import 'bootstrap/dist/css/bootstrap.min.css';
import axios from 'axios';

function PtaxTable() {
    const [cotacoes, setCotacoes] = useState([]);

    useEffect(() => {
        axios.get('/api/ptax')
            .then(response => {
                setCotacoes(response.data.value);
            })
            .catch(error => {
                console.error("Erro ao buscar dados da PTAX", error);
            });
    }, []);

    return (
        <div className="container">
            <h1 className="mt-5">Cotações PTAX dos Últimos 10 Anos</h1>
            <table className="table table-bordered mt-3">
                <thead>
                    <tr>
                        <th>Data</th>
                        <th>Valor de Compra</th>
                        <th>Valor de Venda</th>
                    </tr>
                </thead>
                <tbody>
                    {cotacoes.map((cotacao, index) => (
                        <tr key={index}>
                            <td>{new Date(cotacao.dataHoraCotacao).toLocaleDateString()}</td>
                            <td>{cotacao.cotacaoCompra}</td>
                            <td>{cotacao.cotacaoVenda}</td>
                        </tr>
                    ))}
                </tbody>
            </table>
        </div>
    );
}

export default PtaxTable;

Configurando o Projeto

  1. Instale as dependências: npm install express axios react-bootstrap bootstrap
  2. No backend (Node.js), inicie o servidor: node server.js
  3. No frontend (React), inicie o app:
    bash npm start

Conclusão

Neste artigo, exploramos como acessar os dados da taxa PTAX do Banco Central do Brasil utilizando diferentes linguagens de programação. Também criamos um exemplo completo em Node.js com React e Bootstrap para exibir as cotações dos últimos 10 anos. A API do Banco Central é poderosa e permite uma ampla gama de aplicações práticas em sistemas financeiros e de análise de dados.

Edvaldo Guimrães Filho Avatar

Published by

Categories: ,

Leave a comment