Поиск…


служитель

Servant - это библиотека для декларирования API на уровне типа, а затем:

  • (эта часть слуги может считаться веб-картой),
  • получить клиентские функции (в haskell),
  • генерировать клиентские функции для других языков программирования,
  • создавать документацию для ваших веб-приложений
  • и больше...

У Servant есть сжатый, но мощный API. Простой API может быть написан в очень немногих строках кода:

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

Теперь мы можем объявить наш API:

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

в котором говорится, что мы хотим разоблачить /users для запросов GET с помощью sortby параметров sortby типа SortBy и вернуть JSON типа User в ответ.

Теперь мы можем определить наш обработчик:

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

И основной метод, который прослушивает порт 8081 и обслуживает наш пользовательский API:

main :: IO ()
main = run 8081 app1

Примечание. У Stack есть шаблон для генерации базовых API-интерфейсов в Servant, что полезно для быстрого и быстрого запуска.

Йесод

Проект Yesod может быть создан с использованием stack new с использованием следующих шаблонов:

  • yesod-minimal . Возможны простейшие леса Эсода.
  • yesod-mongo . Использует MongoDB как механизм БД.
  • yesod-mysql . Использует MySQL как механизм БД.
  • yesod-postgres . Использует PostgreSQL как механизм БД.
  • yesod-postgres-fay . Использует PostgreSQL как механизм БД. Использует язык Fay для front-end.
  • yesod-simple . Рекомендуемый шаблон для использования, если вам не нужна база данных.
  • yesod-sqlite . Использует SQlite как механизм БД.

yesod-bin пакет предоставляет yesod исполняемый файл, который можно использовать для запуска сервера разработки. Обратите внимание, что вы также можете запускать приложение напрямую, поэтому инструмент yesod является необязательным.

Application.hs содержит код, который отправляет запросы между обработчиками. Он также настраивает параметры базы данных и ведения журнала, если вы их использовали.

Foundation.hs определяет тип App , который можно рассматривать как среду для всех обработчиков. Будучи в монаде HandlerT , вы можете получить это значение, используя функцию getYesod .

Import.hs - это модуль, который просто реэкспортирует часто используемые материалы.

Model.hs содержит шаблон Haskell, который генерирует типы кода и данных, используемые для взаимодействия с БД. Присутствует только в том случае, если вы используете БД.

config/models - это то, где вы определяете свою схему БД. Используется Model.hs .

config/routes определяет URI веб-приложения. Для каждого метода HTTP маршрута вам нужно создать обработчик с именем {method}{RouteR} .

static/ directory содержит статические ресурсы сайта. Они скомпилируются в двоичный файл с Settings/StaticFiles.hs модуля Settings/StaticFiles.hs .

templates/ содержит шаблоны Шекспира , которые используются при обслуживании запросов.

Наконец, Handler/ directory содержит модули, которые определяют обработчики маршрутов.

Каждый обработчик является HandlerT монады HandlerT на основе IO. Вы можете проверить параметры запроса, его тело и другую информацию, сделать запросы к БД с помощью runDB , выполнить произвольный ввод-вывод и вернуть пользователю различные типы контента. Для обслуживания HTML defaultLayout функция defaultLayout которая позволяет использовать аккуратный состав шаблонов шекспира.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow