[AccuWeather API](https://developer.accuweather.com/) is a web API that provides real-time weather data and forecasts. Developers can use this API to integrate weather information into their applications, websites, or other projects.
2. Change directory to `accuweather-api`
```console
$ cd accuweather-api
```
3. Set your AccuWeather API key using the `.env` file:
> [!TIP]
> To prevent conflicts, ensure that any existing environment variables named `API_ENDPOINT_BASE` or `ACCUWEATHER_API_KEY` are removed before modifying the `.env` file.
Run the following command on your terminal:
```console
unset API_ENDPOINT_BASE
unset ACCUWEATHER_API_KEY
```
It’s time to set the environment variables in the `.env` file:
```plaintext
ACCUWEATHER_API_KEY=XXXXXX
API_ENDPOINT_BASE=http://dataservice.accuweather.com
```
Make sure to populate `ACCUWEATHER_API_KEY` with the correct value.
4. Install the dependencies
Run the following command to install the required packages:
```console
$ npm install
```
This will install all the packages listed in your `package.json` file. These packages are essential for the project to function correctly.
If you encounter any warnings related to deprecated packages, you can ignore them for now for this demonstration.
5. Assuming that you don’t have a pre-existing Node server running on your system, go ahead and start the Node server by running the following command:
```console
$ npm run start
```
You should see the following output:
```plaintext
> express-api-starter@1.2.0 start
> node src/index.js
API_ENDPOINT_BASE: http://dataservice.accuweather.com
ACCUWEATHER_API_KEY is set: true
Listening: http://localhost:5001
```
Keep this terminal window open.
6. Run the curl command to send a GET request to the server URL.
In the new terminal window, enter the following command:
```console
$ curl "http://localhost:5000/api/v1/getWeather?city=Bengaluru"
```
By running the command, you're essentially telling your local server to provide you with weather data for a city named `Bengaluru`. The request is specifically targeting the `/api/v1/getWeather` endpoint, and you're providing the query parameter `city=Bengaluru`. Once you execute the command, the server processes this request, fetches the data and returns it as a response, which `curl` will display in your terminal.
When fetching data from the external AccuWeather API, you're interacting with live data that reflects the latest weather conditions.
## Recap
This guide has walked you through setting up WireMock using Docker. You’ve learned how to create stubs to simulate API endpoints, allowing you to develop and test your application without relying on external services. By using WireMock, you can create reliable and consistent test environments, reproduce edge cases, and speed up your development workflow.