Skip to content

Server Examples

These examples show common Nubo server patterns.

app/index.nubo

import response from "@server/response"
response.write(<h1>Hello from Nubo</h1>)

Run:

Terminal window
nubo serve app

app/api/status.nubo

import response from "@server/response"
response.json({
"ok": true,
"service": "nubo"
})

Request:

GET /api/status

app/users/[id].nubo

import request from "@server/request"
import response from "@server/response"
let id = request.param("id")
response.json({
"id": id
})

Request:

GET /users/123

app/search.nubo

import request from "@server/request"
import response from "@server/response"
let q = request.query("q")
if isNil(q) {
response.status(400)
response.json({
"error": "missing query"
})
} else {
response.json({
"query": q
})
}

Request:

GET /search?q=nubo

app/api/echo.nubo

import request from "@server/request"
import response from "@server/response"
if !request.is("POST") {
response.status(405)
response.json({
"error": "method not allowed"
})
} else {
let data = request.json()
response.json({
"received": data
})
}
import response from "@server/response"
response.setCookie("session", "abc123", 3600, "/")
response.write("cookie set")
import response from "@server/response"
response.redirect("/login")

app/error.nubo

import request from "@server/request"
import response from "@server/response"
import err from "@server/error"
response.status(err.status)
response.write(<ghost>
<h1>Error</h1>
<p>Status: { err.status }</p>
<p>{ err.message }</p>
<small>{ request.path }</small>
</ghost>)