Exemplos

Java

Integre a API brapi.dev em suas aplicações Java usando HttpClient (Java 11+).

Exemplo Básico

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class BrapiExample {
    public static void main(String[] args) throws Exception {
        String token = "SEU_TOKEN";
        String ticker = "PETR4";
        String url = "https://brapi.dev/api/quote/" + ticker + "?token=" + token;

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create(url))
            .GET()
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}

Classe Cliente Completa

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
import com.google.gson.Gson;
import com.google.gson.JsonObject;

public class BrapiClient {
    private static final String BASE_URL = "https://brapi.dev/api";
    private final HttpClient httpClient;
    private final String token;
    private final Gson gson;

    public BrapiClient(String token) {
        this.token = token;
        this.httpClient = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();
        this.gson = new Gson();
    }

    public QuoteResponse getQuote(String ticker) throws Exception {
        String url = String.format("%s/quote/%s?token=%s", BASE_URL, ticker, token);
        
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create(url))
            .header("User-Agent", "Java BrapiClient/1.0")
            .GET()
            .build();

        HttpResponse<String> response = httpClient.send(request,
            HttpResponse.BodyHandlers.ofString());

        if (response.statusCode() != 200) {
            throw new Exception("HTTP " + response.statusCode());
        }

        return gson.fromJson(response.body(), QuoteResponse.class);
    }

    public static class QuoteResponse {
        public Quote[] results;
        
        public static class Quote {
            public String symbol;
            public String shortName;
            public double regularMarketPrice;
            public double regularMarketChange;
            public double regularMarketChangePercent;
            public String currency;
        }
    }

    public static void main(String[] args) {
        try {
            BrapiClient client = new BrapiClient("SEU_TOKEN");
            QuoteResponse response = client.getQuote("PETR4");
            
            if (response.results != null && response.results.length > 0) {
                QuoteResponse.Quote quote = response.results[0];
                System.out.printf("%s: R$ %.2f%n", quote.symbol, quote.regularMarketPrice);
                System.out.printf("Variação: %.2f%%%n", quote.regularMarketChangePercent);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Spring Boot

// BrapiService.java
package com.example.service;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

@Service
public class BrapiService {
    
    @Value("${brapi.token}")
    private String token;
    
    private final RestTemplate restTemplate = new RestTemplate();
    private static final String BASE_URL = "https://brapi.dev/api";
    
    @Cacheable(value = "quotes", key = "#ticker")
    public QuoteResponse getQuote(String ticker) {
        String url = String.format("%s/quote/%s?token=%s", BASE_URL, ticker, token);
        return restTemplate.getForObject(url, QuoteResponse.class);
    }
}

// Controller
package com.example.controller;

import com.example.service.BrapiService;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/stock")
public class StockController {
    
    private final BrapiService brapiService;
    
    public StockController(BrapiService brapiService) {
        this.brapiService = brapiService;
    }
    
    @GetMapping("/{ticker}")
    public QuoteResponse getStock(@PathVariable String ticker) {
        return brapiService.getQuote(ticker);
    }
}

// application.properties
// brapi.token=SEU_TOKEN

Próximos Passos