Get information about any country via a RESTful API
restcountries.eu
restcountries.eu
This data is static, that is it very rarely changes. The whole dataset is also very tiny. It's just better to store this data in-house and don't provide unnecessary point of potential failure by using an external service.
An idea on how to make it more useful is to provide downloadable data dump in several formats suited for immediate import into various data stores. An extra addition might be modules for popular frameworks providing access to this (local) data in all the ways your web service does.
I'm not trying to diss, just trying to find some value for real world usage. The service is neat otherwise.
Isn't this the point of rfc2616 sec13? I haven't looked, but if there are etags etc then I think a computer is better than a human at looking for new data, no?
The data is cool, but seems overkill to do an HTTP call when the full dataset is 11K (gzipped).
http://restcountries.eu/rest/alpha2/za
The South African currency is ZAR, not SOS. Cape Town is the legislative capital, but not _the_ capital.
If you search by currency for ZAR:
http://restcountries.eu/rest/currency/zar
You get South Georgia. I assume that's meant to be South Africa.
And what about countries that use two currencies... oh wait, Cuba actually lists two currencies; never mind.
Especially since you have "AT,Österreich" for Austria.
Shall I submit it to mledoze/countries instead?
Edit: solved - submitted a pull request
More data will come soon. Thank you for all the feedback, I appreciate it!
GET:
http://restcountries.eu/rest/alpha/ee would be http://restcountries.eu/countries?alpha=ee
http://restcountries.eu/rest/name/norge would be http://restcountries.eu/countries?name=norge
That seems right, right?
After creating the representations of each of these resources, I would then create URI templates in my root response (I guess found at /rest) that allow for the searching aspect that this site is providing, which would be something like:
{
"_links": {
"search_by_name": {
"href": "/rest/name/{name}",
"templated": true
}
}
}
I may build on to this to provide other resources, like a collection of capitals, each with a link to "/rest/capital/{capital_city}", or a resource of currencies, linking to "/rest/currency/{currency}".The goal of all of this would be to tell the client how to find resources rather than having that hard-coded into the client. These are just some first steps toward being RESTful, and there are lots of different directions you could take this and still be RESTful.
edit: example was incomplete