Server Examples
These examples show common Nubo server patterns.
Hello World
Section titled “Hello World”app/index.nubo
import response from "@server/response"
response.write(<h1>Hello from Nubo</h1>)Run:
nubo serve appJSON API
Section titled “JSON API”app/api/status.nubo
import response from "@server/response"
response.json({ "ok": true, "service": "nubo"})Request:
GET /api/statusDynamic Route
Section titled “Dynamic Route”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/123Read Query Params
Section titled “Read Query Params”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=nuboRead JSON Body
Section titled “Read JSON Body”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 })}Set a Cookie
Section titled “Set a Cookie”import response from "@server/response"
response.setCookie("session", "abc123", 3600, "/")response.write("cookie set")Redirect
Section titled “Redirect”import response from "@server/response"
response.redirect("/login")Custom Error Page
Section titled “Custom Error Page”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>)