# 🇬🇧 Use Express with OpenFaaS
Before moving on to a longer blog post (soon) on how to use OpenFaaS with GitLab, here is a quick blog post about templates.
There is an interesting organization OpenFass related: https://github.com/openfaas-incubator (opens new window), where you can find a template based on Express : https://github.com/openfaas-incubator/node10-express-template (opens new window).
"This template provides additional context and control over the HTTP response from your function."
This template is very easy to use:
# Create a new function using the Express template
First create a directory for your project:
mkdir express-project
cd express-project
Then, fetch the Express template:
faas template pull https://github.com/openfaas-incubator/node10-express-template
And finally, create the function:
faas new hello --lang node10-express
If you're using the same setup as described in the previous blog post (opens new window), you have to change the hello.yml
file like that:
provider:
name: faas
gateway: http://openfaas.test:8080
functions:
hello:
lang: node10-express
handler: ./hello
image: registry.test:5000/hello:latest
# Create your function thanks the help of Express
At the beginning of the blog post, I quoted the documentation of the template: "This template provides additional context and control over the HTTP response from your function.". So, update the handler.js
file like that:
"use strict"
module.exports = (event, context) => {
switch(event.path) {
case "/about":
context
.headers({"Content-Type": "text/html"})
.status(200)
.succeed("<h1>Hello function with Express template</h1>")
break;
case "/sum":
try {
context
.headers({"Content-Type": "application/json"})
.status(200)
.succeed({
result: event.query.numbers.split(",")
.map(item => Number(item))
.reduce((acc, number) => number + acc)
})
} catch (error) {
context
.headers({"Content-Type": "application/json"})
.status(500)
.fail({
message:"😡 Bad query: write something like that: hello/sum?numbers=10,20,12"
})
}
break;
default:
context
.headers({"Content-Type": "text/plain"})
.status(200)
.succeed("👋 Hello 🌍 World 😀")
}
}
What will it do?
- If you invoke the function like that:
echo | faas-cli invoke hello/about
you'll get this response:<h1>Hello function with Express template</h1>
- If you invoke the function like that:
echo | faas-cli invoke hello/sum?numbers=30,12
you'll get this response:{"result": 42}
- If you invoke the function like that:
echo | faas-cli invoke hello/sum?something=30,12
you'll get this response:{"message": "😡 Bad query: write something like that: hello/sum?numbers=10,20,12"}
- Otherwise, you'll get
""👋 Hello 🌍 World 😀"
# Build an deploy the function
It's easy:
# Build and push to the Docker registry
faas-cli build -f hello.yml
faas-cli push -f hello.yml
# Deploy to OpenFaaS
# - Set the url of the OpenFaaS server
# - Authenticate
# - Deploy
export OPENFAAS_URL=http://openfaas.test:8080
echo -n 21d0b92900a5cd99296cd4f8d96b260ec687fd6464a1eb522b6e699ee7896eed | faas-cli login --username=admin --password-stdin
faas-cli deploy -f hello.yml
And now, you can use your new function:
echo | faas-cli invoke hello/sum?numbers=30,12
That's all for today 😃 It's possible to do these kind of things with Vert-X and Java (or Kotlin), even with Scala (a lot of things to digg).
Have a good Sunday 👋
Last Articles
- 🇫🇷 Type Result en Kotlin | 2020-10-31 | Kotlin
- 🇫🇷 Type Result en Kotlin | 2020-10-31 | Kotlin
- 🇬🇧 Every GitLab Page deserves a real CI/CD | 2020-07-23 | GitLab CI
- 🇫🇷 Lit-Element, commencer doucement | 2020-07-20 | WebComponent
- 🇬🇧 Build quickly and host easily your Docker images with GitLab and GitLab CI | 2020-06-02 | GitLab CI
- 🇬🇧 Deploy quickly on Clever Cloud with GitLab CI | 2020-05-31 | GitLab CI
- 🇫🇷 Borg Collective, mes jouets pour apprendre Knative | 2020-05-30 | Knative
- 🇬🇧 Borg Collective, Toys to learn Knative | 2020-05-30 | Knative
- 🇫🇷 M5Stack, une petit device IOT bien sympathique, programmable en Python | 2020-05-09 | IOT
- 🇫🇷 Knative, l'outil qui rend Kubernetes sympathique | 2020-05-02 | kubernetes