Skip to main content

http: RESTful Client

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

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#

Enabling#

1. Go to the Database page.2. Click on "Extensions" in the sidebar.3. Search for "http".4. Click the toggle.

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#

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

Simple POST example#

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

Resources#