Copyright | (C) 2016-2018 Oleg Grenrus |
---|---|
License | BSD-3-Clause |
Maintainer | Oleg Grenrus <oleg.grenrus@iki.fi> |
Safe Haskell | None |
Language | Haskell2010 |
Provides SwaggerUI
and corresponding redocSchemaUIServer
to embed
ReDoc swagger ui into the application.
All of the UI files are embedded into the binary.
An example:
-- | Actual API. type BasicAPI = Get '[PlainText, JSON] Text :<|> "cat" :> Capture ":name" CatName :> Get '[JSON] Cat -- | API type with bells and whistles, i.e. schema file and swagger-ui. type API =SwaggerSchemaUI
"swagger-ui" "swagger.json" :<|> BasicAPI -- | Servant server for an API server :: Server API server =redocSchemaUIServer
swaggerDoc :<|> (pure "Hello World" :<|> catEndpoint) where catEndpoint name = pure $ Cat name False
Synopsis
- type SwaggerSchemaUI (dir :: Symbol) (schema :: Symbol) = SwaggerSchemaUI' dir (schema :> Get (JSON ': ([] :: [Type])) Swagger)
- type SwaggerSchemaUI' (dir :: Symbol) api = api :<|> (dir :> (Get (HTML ': ([] :: [Type])) (SwaggerUiHtml dir api) :<|> (("index.html" :> Get (HTML ': ([] :: [Type])) (SwaggerUiHtml dir api)) :<|> Raw)))
- redocSchemaUIServer :: Server api ~ Handler Swagger => Swagger -> Server (SwaggerSchemaUI' dir api)
- redocSchemaUIServer' :: Server api -> Server (SwaggerSchemaUI' dir api)
- redocIndexTemplate :: Text
- redocFiles :: [(FilePath, ByteString)]
Swagger UI API
type SwaggerSchemaUI (dir :: Symbol) (schema :: Symbol) = SwaggerSchemaUI' dir (schema :> Get (JSON ': ([] :: [Type])) Swagger) #
Swagger schema + ui api.
SwaggerSchemaUI "swagger-ui" "swagger.json"
will result into following hierarchy:
/swagger.json /swagger-ui /swagger-ui/index.html /swagger-ui/...
type SwaggerSchemaUI' (dir :: Symbol) api = api :<|> (dir :> (Get (HTML ': ([] :: [Type])) (SwaggerUiHtml dir api) :<|> (("index.html" :> Get (HTML ': ([] :: [Type])) (SwaggerUiHtml dir api)) :<|> Raw))) #
Use SwaggerSchemaUI'
when you need even more control over
where swagger.json
is served (e.g. subdirectory).
redocSchemaUIServer :: Server api ~ Handler Swagger => Swagger -> Server (SwaggerSchemaUI' dir api) Source #
Serve alternative Swagger UI.
redocSchemaUIServer' :: Server api -> Server (SwaggerSchemaUI' dir api) Source #
Use a custom server to serve the Swagger spec source.
ReDoc theme
redocFiles :: [(FilePath, ByteString)] Source #