Skip to content

Latest commit

 

History

History
117 lines (95 loc) · 3.34 KB

README.md

File metadata and controls

117 lines (95 loc) · 3.34 KB

WAI: Web Application Interface

English   日本語   Français  

Une bibliothèque qui fournit des protocoles communs pour la communication entre les applications web et les serveurs web.

Installation

Cette bibliothèque n'est pas encore publiée sur pursuit.
Vous pouvez installer ce paquet en ajoutant les détails ci-dessous à votre packages.dhall :

Utilisant Spago
let additions =
  { wai =
      { dependencies = [ "aff", "effect", "http-types", "node-net", "vault" ]
      , repo =
          "https://github.com/Woody88/purescript-wai.git"
      , version =
          "master"
      }
  , http-types =
      { dependencies = [ "tuples", "unicode", "generics-rep" ]
      , repo =
          "https://github.com/Woody88/purescript-http-types.git"
      , version =
          "master"
      }
    , vault =
        { dependencies =   [ "console", "effect" , "functions" , "maybe" , "prelude" , "psci-support" , "refs" ]
        , repo = "https://github.com/Woody88/purescript-vault.git"
        , version = "master"
        }
  }
user@user:~$ spago install wai

Application.

WAI représente WAI modélise les applications en utilisant un flux de requête-réponse.

type Application = Request -> (Response -> Aff ResponseReceived) -> Aff ResponseReceived

Une application est une fonction qui reçoit une requête avec une fonction de continuation pour l'envoi de la réponse.

Middleware

Le middleware est un transformateur d'applications. C'est-à-dire une fonction d'application en application :

type Middleware = Application -> Application

Comme il s'agit simplement de fonctions, elles peuvent être composées dans n'importe quel ordre.

middlewares :: Middleware 
middlewares = myCustomMiddleware1 >>> myCustomMiddleware2

myCustomMiddleware1 :: Middleware 
myCustomMiddleware1 app req send = ...

myCustomMiddleware2 :: Middleware 
myCustomMiddleware app req send = ...

Cela nous permet d'écrire un middleware déclaratif et composable :

requireAuthToken :: Middleware 
requireAuthToken app req send 
    | hasAuthToken req = app req send 
    | otherwise        = send $ responseStr unauthorized401 [] "Missing Token!"
    where 
        hasAuthToken :: Request -> Boolean
        hasAuthToken req = ...

-- Crée une "Response" à partir d'un String
-- Cette fonction fait partie de cette bibliothèque. 
responseStr :: Status -> ResponseHeaders -> String -> Response

Request Vault (En Construction)