scotty-path-normalizer alternatives and similar packages
Based on the "scotty" category.
Alternatively, view scotty-path-normalizer alternatives based on common mentions on social networks and blogs.
-
scotty
Haskell web framework inspired by Ruby's Sinatra, using WAI and Warp (Official Repository) -
scotty-hastache
Integrating Hastache templates into Scotty -
scotty-session
Adding session functionality to scotty -
scotty-cookie
Cookie management helper functions for Scotty framework -
scotty-format
Response format helper for the Scotty web framework -
scotty-binding-play
The Play Framework style data binding in Scotty.
TestGPT | Generating meaningful tests for busy devs
Do you think we are missing an alternative of scotty-path-normalizer or a related project?
README
Scotty path normalizer
This library provides a Scotty action that normalizes the HTTP request target as if it were a Unix file path. When the path normalization action detects a path that can be simplified in one of the following ways, it issues a redirect to a more canonical path.
- Remove trailing slashes:
https://typeclasses.com/contravariance/
becomeshttps://typeclasses.com/contravariance
- Remove double slashes:
https://typeclasses.com//web-servers////lesson-4
becomeshttps://typeclasses.com/web-servers/lesson-4
- Remove
.
segments, because.
represents "the current directory":https://typeclasses.com/ghc/./scoped-type-variables
becomeshttps://typeclasses.com/ghc/scoped-type-variables
- Remove segments of the form
xyz/..
, because..
represents "the parent directory":https://typeclasses.com/python/../javascript/monoidal-folds
becomeshttps://typeclasses.com/javascript/monoidal-folds
The typical way to apply this to your Scotty server is to put
addPathNormalizer
at the top of your ScottyM
app definition.
import qualified Web.Scotty as Scotty
import Web.Scotty.PathNormalizer (addPathNormalizer)
main :: IO ()
main =
Scotty.scotty 3000 $
do
addPathNormalizer
Scotty.get (Scotty.capture "/:word") $
do
beam <- Scotty.param (Data.Text.Lazy.pack "word")
Scotty.html $ fold
[ Data.Text.Lazy.pack "<h1>Scotty, "
, beam
, Data.Text.Lazy.pack " me up!</h1>"
]