Jekyll HTTP Request
April 17, 2024 ยท View on GitHub
Jekyll Liquid Filter for HTTP requests, helps get HTTP response data to the page content and cache.
since many people using UTF-8 nowaday, so I have decide to force encoding the response body to UTF-8.
Installation
- Add
gem 'jekyll-http-request'to your site's Gemfile. - run
bundle. - Add the following to your site's
_config.yml:
plugins:
- jekyll-http-request
Alternatively using git repository for gem gem "jekyll-http-request", :git => "git://github.com/ntsd/jekyll-http-request.git".
Usage
{{ <url> | http_request: <http_method>, <headers>, <body> }}
url: url of the request.http_method: (optional) the HTTP method, only support GET and POST for now.headers: (optional) headers will separate by pipe (|) and separated key-value by colon (:).body: (optional) http request body.
** The liquid filter left side parameters, set to empty string if not provided.
The response will cache to Jekyll::Cache for the next time it call the same request. The cache will clear after the site init.
Examples
HTTP GET
{{ 'http://httpbin.org/anything' | http_request }}
# or
{{ 'http://httpbin.org/anything' | http_request: 'GET', '', '' }}
HTTPS GET
if the url starts with https will force request with ssl.
{{ 'https://httpbin.org/anything' | http_request }}
HTTP POST
{{ 'http://httpbin.org/anything' | http_request: 'POST' }}
With headers
headers will separate by pipe (|) and separated key-value by colon (:).
{{ 'http://httpbin.org/anything' | http_request: 'GET', 'key:value|key2:value2' }}
# of
{{ 'http://httpbin.org/anything' | http_request: 'GET', 'key:value|key2:value2', '' }}
With body
{{ 'http://httpbin.org/anything' | http_request: 'POST', '', 'body' }}
With JSON body
use capture to define jsonBody variable.
{% capture jsonBody %}{ "foo": "bar" }{% endcapture %}
{{ 'http://httpbin.org/anything' | http_request: 'POST', '', jsonBody }}
Fetch Markdown and Render
example fetch Github README.md then render by markdownify
{{ 'https://raw.githubusercontent.com/ntsd/jekyll-http-request/main/README.md' | http_request: 'GET', '', '' | markdownify }}
Unit Testing
To run unit test use rake command.
rake