#Some error in dynamic route

1 messages · Page 1 of 1 (latest)

opaque moon
#

Heyy, i try a create something like a dynamic route but i dont know if the approach is correct


import gleam/bytes_builder.{type BytesBuilder}
import gleam/http/elli
import gleam/http/request.{type Request}
import gleam/http/response.{type Response}
import gleam/io
import routes/handle_users.{get_all_users, get_user_by_id}
import gleam/option.{Some, None}

pub fn service(request: Request(t)) -> Response(BytesBuilder) {
  case request.path {
    "/users" -> get_all_users(request)
    "/users/" <> Some(id) -> get_user_by_id(request, id)
    _ -> default_service(request)
  }
}


pub fn default_service(_request: Request(t)) -> Response(BytesBuilder) {
  let body = bytes_builder.from_string("Hello, world!")

  response.new(200)
  |> response.prepend_header("made-with", "Gleam")
  |> response.set_body(body)
}

pub fn main() {
  io.print("run on port 8080")
  elli.become(service, on_port: 8080)
}

The error happen in Some:
I'm expecting a lowercase name here.

crisp jay
#

you cannot do this pattern match: "/users/" <> Some(id)

#

you can do "/users/" <> id instead