UNPKG

datafire

Version:

[![Travis][travis-image]][travis-link] [![Downloads][downloads-image]][npm-link] [![NPM version][npm-image]][npm-link] [![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://www.npmjs.com/package/datafire) <!--[![Dependency status][deps-i

93 lines (75 loc) 2.01 kB
# DataFire "Hello World" Project This is a small sample project to demonstrate DataFire's features. It will create a single Action, which takes in a name, and outputs a greeting. We'll also link that action to an HTTP endpoint and a scheduled task. ## The Basics ### Action We'll create our action in `hello.js`. #### hello.js ```js var datafire = require('datafire'); module.exports = new datafire.Action({ handler: input => "Hello, world", }) ``` ### Trigger Now let's create a `GET /hello` API endpoint in `DataFire.yml` that will trigger the Action: #### DataFire.yml ```yaml paths: /hello: get: action: ./hello.js ``` ### Running We can try it out with `datafire serve` ```bash datafire serve --port 3000 & # DataFire listening on port 3000 curl http://localhost:3000/hello # "Hello, world" kill $! # stop the server ``` ## Adding Inputs You can add inputs with [JSON Schema](http://json-schema.org/). ```js var datafire = require('datafire'); module.exports = new datafire.Action({ handler: input => 'Hello, ' + input.name, inputs: [{ title: 'name', type: 'string', maxLength: 20, pattern: '\\w+', }], }) ``` Then we can run: ```bash datafire serve --port 3000 & # DataFire listening on port 3000 curl http://localhost:3000/hello?name=world # "Hello, world" curl http://localhost:3000/hello # {"error": "Missing required query parameter 'name'"} ``` ## HTTP Responses By default, DataFire will return your handler's output as JSON with a 200 status code (as well as 404/400/500 errors when appropriate). However, you can specify custom response codes, content types, and bodies in your Action. ```js module.exports = new datafire.Action({ inputs: [{title: 'name'}], handler: input => { if (input.name === 'Voldemort') { return new datafire.Response({ statusCode: 401, headers: {'Content-Type': 'text/html'}, body: "<h1>Nope.</h1>", }); } else { return "Hello, " + input.name; } } }) ```