purescript-rest icon indicating copy to clipboard operation
purescript-rest copied to clipboard

A toolkit for creating REST services with Node and PureScript

purescript-rest

A toolkit for creating REST services with Node and PureScript.

  • Module Documentation
  • Example

Getting Started

The key functionality is in the REST.Endpoint module, which defines the Endpoint type class:

class (Applicative e) <= Endpoint e

This type class can be used to parse routes, read query parameters and headers, read the request body using purescript-foreign, and get a callback with which to return a response.

This lets us define routes in an applicative style, as follows:

endpoint :: forall e eff. (Endpoint e) => e (Eff (http :: Node.HTTP | eff) Unit)
endpoint = getProductDetails <$> (get *> lit "product" *> match "id" "Product ID") <*> lit "details"

Using a type class allows us to interpret our routes in different ways:

  • As an actual web service
  • As documentation, including an automatically-generated API tester.

See the test project for a worked example.