Files
fn-serverless/examples/tutorial/hello/go
Reed Allman 8a59654582 go vet yourself (#397)
go vet caught some nifty bugs. so fixed those here, and also made it so that
we vet everything from now on since the robots seem to do a better job of
vetting than we have managed to.

also adds gofmt check to circle. could move this to the test.sh script (didn't
want a script calling a script, because $reasons) and it's nice and isolated
in its own little land as it is. side note, changed the script so it runs in
100ms instead of 3s, i think find is a lot faster than go list.

attempted some minor cleanup of various scripts
2017-10-06 08:42:33 -07:00
..
2017-10-06 08:42:33 -07:00
2017-07-17 11:41:10 -07:00

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

This example will show you how to test and deploy Go (Golang) 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-go

# Test your function. This will run inside a container exactly how it will on the server
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-go

Or call from a browser: http://localhost:8080/r/myapp/go

And now with the JSON input:

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

That's it!

Note on Dependencies

In Go, simply put them all in the vendor/ directory.

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

    json.NewDecoder(os.Stdin).Decode(p)
    
  3. We wrote our output to stdout

    fmt.Printf("Hello")
    
  4. We sent stderr to the server logs

    log.Println("here")
    

Next Up

Part 2: Input Parameters