Skip to content

Commit

Permalink
README!
Browse files Browse the repository at this point in the history
  • Loading branch information
lpil committed Aug 9, 2023
1 parent 645e008 commit cc71b3f
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 48 deletions.
48 changes: 47 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,50 @@
[![Package Version](https://img.shields.io/hexpm/v/wisp)](https://hex.pm/packages/wisp)
[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/wisp/)

A Gleam project 🧚
Wisp is a practical Gleam web framework rapid development and easy maintenance.
We worry about the hassle of web development, and you focus on writing your
application.

It is based around two concepts: handlers and middleware.

# Handlers

A handler is a function that takes a HTTP request and returns a HTTP
response. A handler may also take other arguments, such as a "context" type
defined in your application which may hold other state such as a database
connection or user session.

```gleam
import wisp.{Request, Response}
pub type Context {
Context(secret: String)
}
pub fn handle_request(request: Request, context: Context) -> Response {
wisp.ok()
}
```

# Middleware

A middleware is a function that takes a response returning function as its
last argument, and itself returns a response. As with handlers both
middleware and the functions they take as an argument may take other
arguments.

Middleware can be applied in a handler with Gleam's `use` syntax. Here the
`log_request` middleware is used to log a message for each HTTP request
handled, and the `serve_static` middleware is used to serve static files
such as images and CSS.

```gleam
import wisp.{Request, Response}
pub fn handle_request(request: Request) -> Response {
use <- wisp.log_request
use <- wisp.serve_static(req, under: "/static", from: "/public")
wisp.ok()
}
```

47 changes: 0 additions & 47 deletions src/wisp.gleam
Original file line number Diff line number Diff line change
@@ -1,50 +1,3 @@
/// Wisp! A Gleam web framework.
///
/// ## Overview
///
/// Wisp is based around two concepts: handlers and middleware.
///
/// ### Handlers
///
/// A handler is a function that takes a HTTP request and returns a HTTP
/// response. A handler may also take other arguments, such as a "context" type
/// defined in your application which may hold other state such as a database
/// connection or user session.
///
/// ```gleam
/// import wisp.{Request, Response}
///
/// pub type Context {
/// Context(secret: String)
/// }
///
/// pub fn handle_request(request: Request, context: Context) -> Response {
/// wisp.ok()
/// }
/// ```
///
/// ### Middleware
///
/// A middleware is a function that takes a response returning function as its
/// last argument, and itself returns a response. As with handlers both
/// middleware and the functions they take as an argument may take other
/// arguments.
///
/// Middleware can be applied in a handler with Gleam's `use` syntax. Here the
/// `log_request` middleware is used to log a message for each HTTP request
/// handled, and the `serve_static` middleware is used to serve static files
/// such as images and CSS.
///
/// ```gleam
/// import wisp.{Request, Response}
///
/// pub fn handle_request(request: Request) -> Response {
/// use <- wisp.log_request
/// use <- wisp.serve_static(req, under: "/static", from: "/public")
/// wisp.ok()
/// }
/// ```
///
import gleam/string_builder.{StringBuilder}
import gleam/bit_builder.{BitBuilder}
import gleam/bit_string
Expand Down

0 comments on commit cc71b3f

Please sign in to comment.