CloudyWeather is a RESTful API for my personal applications that require weather data.
With the sun setting on the Heroku free tier. I have decided to transition some of my projects to Azure. I have a few applications that utilize the OpenWeatherAPI. I decided to take this opportunity to consolidate repetitive code while expanding my knowledge of C# and cloud computing.
Even though a back-end isn't required to interact with the OpenWeatherAPI. I generally interact with the API on the server in the applications that use it; rather than on the client. This allows me to hide API access keys from the clients and to control how often data is fetched from the actual API. I have already repeated similar logic in various applications since prior implementations were monolithic. This project deprecates the existing implementations and they will be refactored to use this implementation.
CloudyWeather is a RESTful API was built using the following:
Technology | Description | Links |
---|---|---|
Memory-safe Programming Language | C# | Why C# |
Development Platform | Microsoft ASP.NET | Web UIs with C# |
Integrated Development Environment | Visual Studio | Visual Studio |
Cloud Services Provider | Microsoft Azure | Azure Cloud Computing |
Hosting Service | Azure App Service | App Service |
REST API | Open Weather API - OneCall | OneCall |
API Testing | Insomnia | Insomnia Rest |
CloudyWeather is hosted on Azure using App Services and uses the free tier.
Searches are conducted using latitude and longitude coordinates only since that is what the underlying OneCall API uses to fetch data.
Currently two endpoints exist: /current
and /current-full
.
The current
endpoint does not return the minutely, hourly or daily forecasts and is a lighter call.
Using basic query parameters, we can pass the desired coordinates.
Ex:/current?lat=60.9125&lon=-166.0087
Data is cached for 10 minutes and unique (doesn't currently exist in cache) or expired searches are limited to 60 calls per minute.
A demo API can be accessed at https://cloudyweatherapi.azurewebsites.net
The API is a functional MVP but doesn't offer a lot of flexibility at the current moment. We could make changes to accept different parameters for the units and language as the defaults cannot currently be overridden. Since this is really for my personal use, I don't have a need to make changes at the current moment, but this is something that could be improved upon in the future.
Not accepting contributions for this particular project, but if you wish to collaborate feel free to reach out!
If you have any questions please feel free to email me @ anthonytropeano@protonmail.com
This project is licensed under the MIT License and a copy can be found here: View License.