Recherche…


Serviteur

Servant est une bibliothèque pour déclarer des API au niveau du type, puis:

  • écrire des serveurs (cette partie de serviteur peut être considérée comme un cadre web),
  • obtenir des fonctions client (en haskell),
  • générer des fonctions client pour d'autres langages de programmation,
  • générer de la documentation pour vos applications Web
  • et plus...

Servant possède une API concise mais puissante. Une API simple peut être écrite en très peu de lignes de code:

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeOperators #-}

import Data.Text
import Data.Aeson.Types
import GHC.Generics
import Servant.API

data SortBy = Age | Name

data User = User {
  name :: String,
  age :: Int
} deriving (Eq, Show, Generic)

instance ToJSON User  -- automatically convert User to JSON

Maintenant, nous pouvons déclarer notre API:

type UserAPI = "users" :> QueryParam "sortby" SortBy :> Get '[JSON] [User]

qui indique que nous souhaitons exposer /users aux requêtes GET avec un sortby de requête sortby de type SortBy et renvoyer JSON de type User dans la réponse.

Maintenant, nous pouvons définir notre gestionnaire:

-- This is where we'd return our user data, or e.g. do a database lookup
server :: Server UserAPI
server = return [User "Alex" 31]

userAPI :: Proxy UserAPI
userAPI = Proxy

app1 :: Application
app1 = serve userAPI server

Et la méthode principale qui écoute sur le port 8081 et sert notre API utilisateur:

main :: IO ()
main = run 8081 app1

Remarque: Stack dispose d'un modèle pour générer des API de base dans Servant, ce qui est utile pour démarrer rapidement.

Yessod

Le projet Yesod peut être créé avec la stack new utilisant les modèles suivants:

  • yesod-minimal . Le plus simple échafaudage de Yesod possible.
  • yesod-mongo . Utilise MongoDB comme moteur de base de données.
  • yesod-mysql . Utilise MySQL comme moteur de base de données.
  • yesod-postgres . Utilise PostgreSQL comme moteur de base de données.
  • yesod-postgres-fay . Utilise PostgreSQL comme moteur de base de données. Utilise le langage Fay pour le front-end.
  • yesod-simple . Modèle recommandé à utiliser si vous n'avez pas besoin d'une base de données.
  • yesod-sqlite . Utilise SQlite comme moteur de base de données.

yesod-bin paquet yesod-bin fournit yesod exécutable yesod , qui peut être utilisé pour exécuter le serveur de développement. Notez que vous pouvez également exécuter votre application directement, donc l'outil yesod est facultatif.

Application.hs contient du code qui distribue les requêtes entre les gestionnaires. Il configure également la base de données et les paramètres de journalisation, si vous les avez utilisés.

Foundation.hs définit le type d' App , qui peut être considéré comme un environnement pour tous les gestionnaires. En étant dans HandlerT , vous pouvez obtenir cette valeur en utilisant la fonction getYesod .

Import.hs est un module qui ne fait que réexporter des éléments couramment utilisés.

Model.hs contient Template Haskell qui génère des codes et des types de données utilisés pour l'interaction de la base de données. Présent uniquement si vous utilisez DB.

config/models est l'endroit où vous définissez votre schéma de base de données. Utilisé par Model.hs .

config/routes définit les URI de l'application Web. Pour chaque méthode HTTP de la route, vous devez créer un gestionnaire nommé {method}{RouteR} .

static/ directory contient les ressources statiques du site. Ceux-ci sont compilés en binaire par le module Settings/StaticFiles.hs .

templates/ directory contient les modèles Shakespeare utilisés lors du traitement des requêtes.

Enfin, Handler/ directory contient des modules qui définissent des gestionnaires pour les routes.

Chaque gestionnaire est une action HandlerT basée sur IO. Vous pouvez inspecter les paramètres de requête, son corps et d'autres informations, effectuer des requêtes sur la base de données avec runDB , exécuter des E / S arbitraires et renvoyer différents types de contenu à l'utilisateur. Pour servir HTML, la fonction defaultLayout est utilisée pour permettre une composition soignée des modèles shakespeariens.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow