mig-server: Build lightweight and composable servers
With library mig we can build lightweight and composable servers. There are only couple of combinators to assemble servers from parts. It supports generic handler functions as servant does. But strives to use more simple model for API. It does not go to describing Server API at type level which leads to simpler error messages.
The main features are:
lightweight library
expressive DSL to compose servers
type-safe handlers
handlers are encoded with generic haskell functions
built on top of WAI and warp server libraries.
Example of hello world server:
{-# Language OverloadedStrings #-} import Mig.Json.IO -- | We can render the server and run it on port 8085. -- It uses wai and warp. main :: IO () main = runServer 8085 server -- | Init simple hello world server whith two routes: server :: Server IO server = "api/v1" /. [ "hello" /. hello , "bye" /. bye ] -- | Handler takes no inputs and marked as Get HTTP-request that returns Text. hello :: Get (Resp Text) hello = pure $ ok "Hello World" -- | Handle with URL-param query and json body input as Post HTTP-request that returns Text. bye :: Query "name" Text -> Body Text -> Post (Resp Text) bye (Query name) (Body greeting) = pure $ ok $ "Bye to " <> name <> " " <> greeting
Please see:
quick start guide at https://anton-k.github.io/mig/
examples directory for more fun servers: at https://github.com/anton-k/mig/tree/main/examples/mig-example-apps#readme
reference for the main functions: https://anton-k.github.io/mig/09-reference.html
[Skip to Readme]
Downloads
- mig-server-0.2.1.0.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
- No Candidates
Versions [RSS] | 0.1.0.0, 0.1.0.1, 0.2.1.0 |
---|---|
Dependencies | aeson, base (>=4.7 && <5), blaze-html, data-default, http-api-data, http-types, mig (>=0.2.1.0), mig-extra (>=0.1.1.0), mig-swagger-ui (>=0.1), mig-wai (>=0.1.0.1), openapi3, text, transformers, warp [details] |
License | BSD-3-Clause |
Copyright | 2023 Anton Kholomiov |
Author | Anton Kholomiov |
Maintainer | anton.kholomiov@gmail.com |
Category | Web |
Home page | https://github.com/anton-k/mig#readme |
Bug tracker | https://github.com/anton-k/mig/issues |
Source repo | head: git clone https://github.com/anton-k/mig |
Uploaded | by AntonKholomiov at 2023-11-29T07:03:22Z |
Distributions | NixOS:0.2.1.0 |
Downloads | 119 total (5 in the last 30 days) |
Rating | (no votes yet) [estimated by Bayesian average] |
Your Rating | |
Status | Docs available [build log] Last success reported on 2023-11-29 [all 1 reports] |