Prepare for the PgBouncer and IPv4 deprecations on 26th January 2024

Database

http: RESTful Client

The http extension allows you to call RESTful endpoints within Postgres.

Quick demo

Overview

Let's cover some basic concepts:

  • REST: stands for REpresentational State Transfer. It's simply a way to request data from external services.
  • RESTful APIs are servers which accept HTTP "calls". The calls are typically:
    • GET − Read only access to a resource.
    • POST − Creates a new resource.
    • DELETE − Removes a resource.
    • PUT − Updates an existing resource or creates a new resource.

You can use the http extension to make these network requests from Postgres.

Usage

Enable the extension

  1. Go to the Database page in the Dashboard.
  2. Click on Extensions in the sidebar.
  3. Search for "http" and enable the extension.

Available functions

While the main usage is simply http('http_request'), there are 5 wrapper functions for specific functionality:

  • http_get()
  • http_post()
  • http_put()
  • http_delete()
  • http_head()

Returned values

A successful call to a web URL from the http extension returns a record with the following fields:

  • status: integer
  • content_type: character varying
  • headers: http_header[]
  • content: character varying. Typically you would want to cast this to jsonb using the format content::jsonb

Examples

Simple GET example


_10
select
_10
"status", "content"::jsonb
_10
from
_10
http_get('https://jsonplaceholder.typicode.com/todos/1');

Simple POST example


_10
select
_10
"status", "content"::jsonb
_10
from
_10
http_post(
_10
'https://jsonplaceholder.typicode.com/posts',
_10
'{ "title": "foo", "body": "bar", "userId": 1 }',
_10
'application/json'
_10
);

Resources