Skip to main content

03 - Fetching Data

Continuing from the previous section, we will look at fetching data from another endpoint whilst utilizing input parameters to target something specific.

We will utilize:

Steps

1. HTTP GET API

In this simple example we will be creating a HTTP GET API where we will call another API endpoint and use a query parameter to specify an id parameter to fetch a specific comment.

Deploy via Hosted / Managed

Deploy via Self Hosted / Unmanaged

  • A configs directory should have been created automatically for you, else create one.
  • Copy the below example config into your configs directory, eg.
        configs/03-http-get-data.yml
  • Stop/Start airpipe eg.
    ./airpipe server --api-key your-api-key --config-dir configs

Example Config

Deploy
HTTP GET API
loading...

Test

Hosted mode, either navigate to or curl:

  • The load configuration UI will automatically show you what your detected routes are, you can copy this for the next steps.

  • The link is automatically built with your organization uuid and environment, your API endpoints can be found here if required https://app.airpipe.io/configurations.

  • Update the route as necessary

curl https://app.airpipe.io/your_org_uuid/staging/tutorial/getdata

Self hosted mode, either navigate to or curl:

http://0.0.0.0:4111/tutorial/getdata

curl http://0.0.0.0:4111/tutorial/getdata

Response

{
"data": {
"GetData": {
"data": {
"body": {
"body": "laudantium enim quasi est quidem magnam voluptate ipsam eos\ntempora quo necessitatibus\ndolor quam autem quasi\nreiciendis et nam sapiente accusantium",
"email": "[email protected]",
"id": 1,
"name": "id labore ex et quam laborum",
"postId": 1
},
"headers": {
"accept-ranges": "bytes",
"access-control-allow-credentials": "true",
"age": "15421",
"alt-svc": "h3=\":443\"; ma=86400",
"cache-control": "max-age=43200",
"cf-cache-status": "HIT",
"cf-ray": "883a2d826dad8197-IAD",
"content-length": "268",
"content-type": "application/json; charset=utf-8",
"date": "Tue, 14 May 2024 10:24:18 GMT",
"etag": "W/\"10c-KJ4I9RM/+33TKdV8CFsIvqsDSP0\"",
"expires": "-1",
"nel": "{\"report_to\":\"heroku-nel\",\"max_age\":3600,\"success_fraction\":0.005,\"failure_fraction\":0.05,\"response_headers\":[\"Via\"]}",
"pragma": "no-cache",
"report-to": "{\"group\":\"heroku-nel\",\"max_age\":3600,\"endpoints\":[{\"url\":\"https://nel.heroku.com/reports?ts=1715432434&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&s=unAGx%2FNj2kC7aw%2BJo6jqZ5aN559MvyKIxP1xTVZgHcw%3D\"}]}",
"reporting-endpoints": "heroku-nel=https://nel.heroku.com/reports?ts=1715432434&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&s=unAGx%2FNj2kC7aw%2BJo6jqZ5aN559MvyKIxP1xTVZgHcw%3D",
"server": "cloudflare",
"vary": "Origin, Accept-Encoding",
"via": "1.1 vegur",
"x-content-type-options": "nosniff",
"x-powered-by": "Express",
"x-ratelimit-limit": "1000",
"x-ratelimit-remaining": "999",
"x-ratelimit-reset": "1715432467"
},
"status": 200
},
"time.ms": 10
}
}
}

2. HTTP POST API (Webhook)

In this simple example we will be creating a HTTP POST API where we will call another API endpoint and use a value in the body to specify an id parameter to fetch a specific comment.

Deploy via Hosted / Managed

Deploy via Self Hosted / Unmanaged

  • A configs directory should have been created automatically for you, else create one.
  • Copy the below example config into your configs directory, eg.
        configs/03-http-post-data.yml
  • Stop/Start airpipe eg.
    ./airpipe server --api-key your-api-key --config-dir configs

Example Config

Deploy
HTTP POST API
loading...

Test

Hosted mode, curl or use your preferred API testing tool:

  • The load configuration UI will automatically show you what your detected routes are, you can copy this for the next steps.

  • The link is automatically built with your organization uuid and environment, your API endpoints can be found here if required https://app.airpipe.io/configurations.

  • Update the route as necessary

curl --location 'https://api.airpipe.io/your-org-uuid/staging/tutorial/getdata' \
--header 'Content-Type: application/json' \
--data '{
"id": 1
}'

Self hosted mode, curl or use your preferred API testing tool:

curl --location 'http://0.0.0.0:4111/tutorial/getdata' \
--header 'Content-Type: application/json' \
--data '{
"id": 1
}'

Response

{
"data": {
"GetData": {
"data": {
"body": {
"body": "laudantium enim quasi est quidem magnam voluptate ipsam eos\ntempora quo necessitatibus\ndolor quam autem quasi\nreiciendis et nam sapiente accusantium",
"email": "[email protected]",
"id": 1,
"name": "id labore ex et quam laborum",
"postId": 1
},
"headers": {
"accept-ranges": "bytes",
"access-control-allow-credentials": "true",
"age": "15421",
"alt-svc": "h3=\":443\"; ma=86400",
"cache-control": "max-age=43200",
"cf-cache-status": "HIT",
"cf-ray": "883a2d826dad8197-IAD",
"content-length": "268",
"content-type": "application/json; charset=utf-8",
"date": "Tue, 14 May 2024 10:24:18 GMT",
"etag": "W/\"10c-KJ4I9RM/+33TKdV8CFsIvqsDSP0\"",
"expires": "-1",
"nel": "{\"report_to\":\"heroku-nel\",\"max_age\":3600,\"success_fraction\":0.005,\"failure_fraction\":0.05,\"response_headers\":[\"Via\"]}",
"pragma": "no-cache",
"report-to": "{\"group\":\"heroku-nel\",\"max_age\":3600,\"endpoints\":[{\"url\":\"https://nel.heroku.com/reports?ts=1715432434&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&s=unAGx%2FNj2kC7aw%2BJo6jqZ5aN559MvyKIxP1xTVZgHcw%3D\"}]}",
"reporting-endpoints": "heroku-nel=https://nel.heroku.com/reports?ts=1715432434&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&s=unAGx%2FNj2kC7aw%2BJo6jqZ5aN559MvyKIxP1xTVZgHcw%3D",
"server": "cloudflare",
"vary": "Origin, Accept-Encoding",
"via": "1.1 vegur",
"x-content-type-options": "nosniff",
"x-powered-by": "Express",
"x-ratelimit-limit": "1000",
"x-ratelimit-remaining": "999",
"x-ratelimit-reset": "1715432467"
},
"status": 200
},
"time.ms": 5
}
}
}