Bob Glamm
12/05/2022, 10:07 PMroutes(
"/projects" bind routes(
"/{projectId:\\d+}" bind { ... parse projectId here, yielding a RoutingHttpHandler that can access something constructed from the projectId ... }
)
)
This pattern would be nested several more times: /project/{projectId}/workspace/{workspaceId}/snippet/{snippetId}
, for instanceBear MAN
12/06/2022, 2:06 AMval lensProjectId = <http://Path.int|Path.int>().of("projectId")
val lensWorkspaceId = <http://Path.int|Path.int>().of("workspaceId")
val lensSnippetId = <http://Path.int|Path.int>().of("snippetId")
val r = routes(
"/projects" bind routes(
"/{projectId:\\d+}" bind routes(
"/workspaces" bind routes(
"/{workspaceId:\\d+}" bind routes(
"/snippets" bind routes(
"/{snippetId:\\d+}" bind Method.GET to { request->
val projectId = lensProjectId(request)
val workspaceId = lensWorkspaceId(request)
val snippetId = lensSnippetId(request)
Response(Status.OK).body("projectId: $projectId, workspaceId: $workspaceId, snippetId: $snippetId")
}
)
)
)
)
)
)
Request:
GET <http://localhost:8000/projects/123/workspaces/456/snippets/789>
should response
HTTP/1.1 200 OK
Connection: close
Content-Length: 48
Date: Tue, 06 Dec 2022 02:03:52 GMT
projectId: 123, workspaceId: 456, snippetId: 789