MyNixOS website logo
Description

Specification of HTTP request/response generators and parsers.

Using httpspec you can write a specification for a HTTP request/response defining the method, headers, url parameters and the body. This specification bidirectionally maps an abstract request/response data type to a concrete realisation as a HTTP request/response. The specification can be used to generate HTTP requests/responses from an abstract description and it can be used to parse a HTTP request/response into such an abstract description. The idea is very similar to the way pickling of XML data is described in HXT. For example, the abstract representation of an authentication request and response could be described as data AuthUserReq = AuthUserReq { authUser_user :: String , authUser_pass :: String } data AuthUserRes = AuthUserOk { authUserOk_sid :: String } | AuthUserFailed Using httpspec you can define a mapping between HTTP and these types: instance HasReqSpec AuthUserReq where reqSpec = rsMeth Http.POST $ rsPath "/authenticate-user" $ rsWrap (uncurry AuthUserReq, (AuthUserReq a b) -> (a,b)) $ rsPair (rsParam "uid") (rsParam "pass") instance HasResSpec AuthUserRes where resSpec = rsSwitch [ rsCase (AuthUserOk,authUserOk_sid) $ rsStatus 200 $ rsContentType "text/plain" $ rsEncodingFixed UTF8 $ rsBody , rsCaseConst AuthUserFailed $ rsStatus 403 ]

Metadata

Version

0.3.0.1

License

Unknown

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows