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
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
: integercontent_type
: character varyingheaders
: http_header[]content
: character varying. Typically you would want to cast this tojsonb
using the formatcontent::jsonb
Examples
Simple GET
example
_10select_10 "status", "content"::jsonb_10from_10 http_get('https://jsonplaceholder.typicode.com/todos/1');
Simple POST
example
_10select_10 "status", "content"::jsonb_10from_10 http_post(_10 'https://jsonplaceholder.typicode.com/posts',_10 '{ "title": "foo", "body": "bar", "userId": 1 }',_10 'application/json'_10 );
Resources
- Official
http
GitHub Repository