Simple go template server that supports HTTP calls inside templates. Configurable via JSON file
Usage:
-
Place templates in
${PWD}/templates
-
Each template needs to have define block:
{{define "index"}} <html> <head> {{template "head"}} </head> <body> {{template "header"}} <h1>Index</h1> </body> </html> {{end}}
-
Configure server via
${PWD}/serve.json
{ "pages": [ { "url": "/", "template": "index" }, { "url": "/role/{roleName}", "template": "role" } ] }
-
You can access path parameters inside templates. E.g.
<h1>Index — Role {{ .Params.roleName }}</h1>
-
Sprig functions available
-
Making http requests inside templates:
{{ $json := fetchJSON "http:https://api-container:80" $.Headers }}
Because these are templates and it is intended for usage within containers — the timeout is 300ms -
Request headers are automatically to the
fetchJSON
-
fetchJSON
can fetch local files as well:{{ $json := fetchJSON "file:https://mock/data.json" $.Headers }}
-
Use within you docker container:
FROM jedrzejlewandowski/templated:1.7.3 WORKDIR /app ADD serve.json /app/serve.json ADD templates /app/templates CMD ["/bin/templated"]