Szukaj…


Sługa

Servant to biblioteka służąca do deklarowania interfejsów API na poziomie typu, a następnie:

  • pisz serwery (tę część sługi można uznać za platformę internetową),
  • uzyskać funkcje klienta (w haskell),
  • generować funkcje klienta dla innych języków programowania,
  • generuj dokumentację dla swoich aplikacji internetowych
  • i więcej...

Sługa ma zwięzłe, ale potężne API. Prosty interfejs API można napisać w kilku wierszach kodu:

{-# 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

Teraz możemy zadeklarować nasze API:

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

który stwierdza, że chcemy narażać /users na żądania GET za pomocą parametru zapytania sortby według typu SortBy i SortBy odpowiedzi JSON typu User .

Teraz możemy zdefiniować naszego handlera:

-- 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

I główna metoda, która nasłuchuje na porcie 8081 i obsługuje nasz interfejs API użytkownika:

main :: IO ()
main = run 8081 app1

Uwaga: Stack ma szablon do generowania podstawowych interfejsów API w Servant, który jest przydatny do szybkiego uruchamiania i uruchamiania.

Yesod

Projekt Yesod można utworzyć za pomocą stack new przy użyciu następujących szablonów:

  • yesod-minimal . Najprostsze możliwe rusztowanie Yesod.
  • yesod-mongo . Używa MongoDB jako silnika DB.
  • yesod-mysql . Używa MySQL jako silnika DB.
  • yesod-postgres . Używa PostgreSQL jako silnika DB.
  • yesod-postgres-fay . Używa PostgreSQL jako silnika DB. Używa języka Fay w interfejsie użytkownika.
  • yesod-simple . Zalecany szablon do użycia, jeśli nie potrzebujesz bazy danych.
  • yesod-sqlite . Używa SQlite jako silnika DB.

Pakiet yesod-bin zapewnia plik wykonywalny yesod , którego można użyć do uruchomienia serwera programistycznego. Pamiętaj, że możesz także uruchomić aplikację bezpośrednio, więc narzędzie yesod jest opcjonalne.

Application.hs zawiera kod, który rozsyła żądania między modułami obsługi. Konfiguruje również ustawienia bazy danych i rejestrowania, jeśli ich użyłeś.

Foundation.hs definiuje typ App , który może być postrzegany jako środowisko dla wszystkich programów obsługi. Będąc w HandlerT , możesz uzyskać tę wartość za pomocą funkcji getYesod .

Import.hs to moduł, który po prostu ponownie eksportuje często używane rzeczy.

Model.hs zawiera szablon Haskell, który generuje kod i typy danych używane do interakcji z Model.hs danych. Prezentuj tylko, jeśli korzystasz z DB.

config/models to miejsce, w którym definiujesz schemat DB. Używany przez Model.hs .

config/routes definiuje identyfikatory URI aplikacji sieci Web. Dla każdej metody HTTP trasy musisz utworzyć {method}{RouteR} obsługi o nazwie {method}{RouteR} .

katalog static/ zawiera statyczne zasoby witryny. Są one kompilowane do Settings/StaticFiles.hs binarnego przez moduł Settings/StaticFiles.hs .

katalog templates/ katalog zawiera szablony Szekspira, które są używane podczas obsługi żądań.

Wreszcie katalog Handler/ zawiera moduły definiujące moduły obsługi tras.

Każdy HandlerT obsługi jest HandlerT monady HandlerT opartą na IO. Możesz sprawdzać parametry żądania, jego treść i inne informacje, wykonywać zapytania do bazy danych za pomocą runDB , wykonywać dowolne runDB / wy i zwracać różne typy treści do użytkownika. Aby obsługiwać HTML, defaultLayout jest funkcja defaultLayout która umożliwia zgrabną kompozycję szablonów szekspirowskich.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow