Files
fn-serverless/examples/tutorial/hello/node/README.md
James Jeffrey c7f3066c75 Update references remove refs to treeder oracle funcy (#376)
* Remove lots of refs to iron and funcy oracle etc..

* more ref replacements

* Replacing more refs. Treeder

* Use Fn not FN
2017-09-29 16:22:15 -07:00

2.2 KiB

Tutorial 1: NodeJS Function w/ Input (3 minutes)

This example will show you how to test and deploy Node code to Fn. It will also demonstrate passing data in through stdin.

First, run the following commands:

# Initialize your function creating a func.yaml file
fn init --name hello-node

# Test your function. 
# This will run inside a container exactly how it will on the server. It will also install and vendor dependencies from Gemfile
fn run

# Now try with an input
cat sample.payload.json | fn run

# Deploy your functions to the Fn server (default localhost:8080)
# This will create a route to your function as well
fn deploy --app myapp

Now call your function:

curl http://localhost:8080/r/myapp/hello-node

Or call from a browser: http://localhost:8080/r/myapp/hello-node

And now with the JSON input:

curl -H "Content-Type: application/json" -X POST -d @sample.payload.json http://localhost:8080/r/myapp/hello-node

That's it! Our fn deploy packaged our function and sent it to the Fn server. Try editing func.js and then doing another fn deploy.

Note on Dependencies

Create a package.json file in your functions directory. The CLI should pick that up and build in all your dependencies on fn run and fn deploy.

For example, using the package.json file in this directory which includes the request package, you can add this to func.js and it will work:

var request = require('request');
request('http://www.google.com', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body) // Show the HTML for the Google homepage.
  }
})

In Review

  1. We piped JSON data into the function at the command line

    cat sample.payload.json | fn run
    
  2. We received our function input through stdin

    obj = JSON.parse(fs.readFileSync('/dev/stdin').toString())
    
  3. We wrote our output to stdout

    console.log
    
  4. We sent stderr to the server logs

    console.error
    

Next Up

Part 2: Input Parameters