Search code examples
javaapispring-bootapi-designcurrency-exchange-rates

Can we call external API without API ID?


I am new to API design, I am working on one project where I need to call currency exchange API from National Bank of Poland http://api.nbp.pl but I do not see any indication where I can find API ID. This development is on Spring Boot if I am trying to run the application without API ID it is throwing 404 error.

Here is the piece of code that I have written.

@RequestMapping(method = RequestMethod.GET, value = "/exchangerates/rates/{table}/{code}")
public @ResponseBody Object getAllCurriencyExchangeRates(@PathVariable String table, @PathVariable String code) {

    RestTemplate restTemplate = new RestTemplate();
    HttpHeaders headers = new HttpHeaders();

    ResponseEntity<Object> response = 
            restTemplate.getForEntity("http://api.nbp.pl/api/" +table+ "," +code+ Object.class, null, headers);

    return response;
}        

Actual query http://api.nbp.pl/api/exchangerates/rates/a/chf/

So, my question is can we call an external API without API ID?


Solution

  • First things first, you are trying to reach wrong API. That is why you are getting 404 not found. 404 means there is no url like you are calling.

    Check your restTemplate carefully,

    restTemplate.getForEntity("http://api.nbp.pl/api/" + table+ "," +code+ Object.class, null, headers);
    

    You are doing wrong when concatenate strings. It should look something like this;

    restTemplate.getForEntity("http://api.nbp.pl/api/exchangerates/rates/"+table+"/"+code, Object.class, null, headers);
    

    And a hint for API developers, firstly you should play with api using Postman and then write code with api.