Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/scotty-web/scotty
Haskell web framework inspired by Ruby's Sinatra, using WAI and Warp (Official Repository)
https://github.com/scotty-web/scotty
rest rest-api web-framework
Last synced: 6 days ago
JSON representation
Haskell web framework inspired by Ruby's Sinatra, using WAI and Warp (Official Repository)
- Host: GitHub
- URL: https://github.com/scotty-web/scotty
- Owner: scotty-web
- License: bsd-3-clause
- Created: 2011-12-30T22:43:27.000Z (almost 13 years ago)
- Default Branch: master
- Last Pushed: 2024-07-19T01:33:29.000Z (4 months ago)
- Last Synced: 2024-10-19T20:35:53.891Z (16 days ago)
- Topics: rest, rest-api, web-framework
- Language: Haskell
- Homepage: http://hackage.haskell.org/package/scotty
- Size: 744 KB
- Stars: 1,718
- Watchers: 36
- Forks: 134
- Open Issues: 32
-
Metadata Files:
- Readme: README.md
- Changelog: changelog.md
- License: LICENSE
Awesome Lists containing this project
- my-awesome - scotty-web/scotty - api,web-framework pushed_at:2024-07 star:1.7k fork:0.1k Haskell web framework inspired by Ruby's Sinatra, using WAI and Warp (Official Repository) (Haskell)
README
# Scotty [![Hackage](http://img.shields.io/hackage/v/scotty.svg)](https://hackage.haskell.org/package/scotty) [![Stackage Lts](http://stackage.org/package/scotty/badge/lts)](http://stackage.org/lts/package/scotty) [![Stackage Nightly](http://stackage.org/package/scotty/badge/nightly)](http://stackage.org/nightly/package/scotty) [![CI](https://github.com/scotty-web/scotty/actions/workflows/haskell-ci.yml/badge.svg)](https://github.com/scotty-web/scotty/actions/workflows/haskell-ci.yml)
A Haskell web framework inspired by Ruby's Sinatra, using WAI and Warp.
```haskell
{-# LANGUAGE OverloadedStrings #-}
import Web.Scottymain = scotty 3000 $
get "/:word" $ do
beam <- pathParam "word"
html $ mconcat ["Scotty, ", beam, " me up!
"]
```Scotty is the cheap and cheerful way to write RESTful, declarative web applications.
* A page is as simple as defining the verb, URL pattern, and Text content.
* It is template-language agnostic. Anything that returns a Text value will do.
* Conforms to the [web application interface (WAI)](https://github.com/yesodweb/wai/).
* Uses the very fast Warp webserver by default.As for the name: Sinatra + Warp = Scotty.
## Examples
Run /basic.hs to see Scotty in action:
```bash
runghc examples/basic.hs
```
`Setting phasers to stun... (port 3000) (ctrl-c to quit)`Or equivalently with [`stack`](https://docs.haskellstack.org/en/stable/):
```bash
stack exec -- scotty-basic
```Once the server is running you can interact with it with curl or a browser:
```bash
curl localhost:3000
```
`foobar````bash
curl localhost:3000/foo_query?p=42
```
`42
`Additionally, the `examples` directory shows a number of concrete use cases, e.g.
* [exception handling](./examples/exceptions.hs)
* [global state](./examples/globalstate.hs)
* [configuration](./examples/reader.hs)
* [cookies](./examples/cookies.hs)
* [file upload](./examples/upload.hs)
* and more## More Information
Tutorials and related projects can be found in the [Scotty wiki](https://github.com/scotty-web/scotty/wiki).
## Contributing
Feel free to ask questions or report bugs on the [Github issue tracker](https://github.com/scotty-web/scotty/issues/).
Github issues are now (September 2023) labeled, so newcomers to the Haskell language can start with `easy fix` ones and gradually progress to `new feature`s, `bug`s and `R&D` :)
## Package versions
Scotty adheres to the [Package Versioning Policy](https://pvp.haskell.org/).
## FAQ
* Fails to compile regex-posix on Windows
* If you are using stack, add the following parameters to `stack.yaml`:
* ```yaml
extra-deps:
- regex-posix-clib-2.7
flags:
regex-posix:
_regex-posix-clib: true
```
* If you are using cabal, update the `constraints` section of `cabal.project.local` as follows:
* ```
constraints:
regex-posix +_regex-posix-clib
```### Contributors
# Copyright
(c) 2012-Present, Andrew Farmer and Scotty contributors