1.9 KiB
ningle-fbr (WIP)
An utility for ningle and jingle to enable file-based routing
What is file-based routing?
File-based routing is a concept commonly used in modern web frameworks such as Next.js. Instead of explicitly defining routes through configuration or code, the framework automatically sets up routes based on the file hierarchy of a particular directory (usually the "pages" or "routes" directory).
Usage
To use ningle-fbr, you must use package-inferred-system.
/example.asd
(defsystem "example"
:class :package-inferred-system
:pathname "src"
:depends-on ("example/app")
/src/app.lisp
(uiop:define-package #:example
(:nicknames #:example/app)
(:use #:cl)
(:import-from #:ningle)
(:import-from #:ningle-fbr
#:assign-routes))
(in-package #:example/app)
(defparameter *app* (make-instance 'ningle:<app>))
(assign-routes *app*
:directory "src/routes"
:system "example")
Static routing
/src/routes/index.lisp
→ /
/src/routes/hello.lisp
→ /hello
/src/routes/users/index.lisp
→ /users
/src/routes/nested/page.lisp
→ /nested/page
(uiop:define-package #:example/routes/index
(:use #:cl)
(:export #:on-get
#:on-post
#:on-put
#:on-delete))
(in-package #:example/routes/index)
(defun on-get (params)
...)
(defun on-post (params)
...)
(defun on-put (params)
...)
(defun on-delete (params)
...)
Dynamic routing
A file or directory name prefixed with '=' indicates a dynamic path.
In the example below, the parameter id
can be obtained from handler's params.
/src/routes/user/=id.lisp
→ /user/:id
License
Licensed under MIT License.
Copyright (c) 2024, skyizwhite.