package main import ( "net/http" "fmt" "encoding/json" "github.com/labstack/echo" "github.com/labstack/echo/middleware" "github.com/aws/aws-lambda-go/events" "github.com/aws/aws-lambda-go/lambda" ) type User struct { Username string FirstName string LastName string } type Task struct { Title string Description string UserOfTask User Date string } func main() { lambda.Start(Handler) } func Handler() (events.APIGatewayProxyResponse, error) { e := echo.New() // Middleware e.Use(middleware.Logger()) e.Use(middleware.Recover()) // CORS e.Use(middleware.CORSWithConfig(middleware.CORSConfig{ AllowOrigins: []string{"*"}, AllowMethods: []string{echo.GET, echo.HEAD, echo.PUT, echo.PATCH, echo.POST, echo.DELETE}, })) // Getting JSON as []byte b, err := convertTasksToJSON() if err != nil { fmt.Println("error:", err) } // Route => handler e.GET("/", func(c echo.Context) error { return c.String(http.StatusOK, string(b[:])) }) // Server e.Start(":1500") return events.APIGatewayProxyResponse{ Body: string(b[:]), StatusCode: 200, }, nil } func convertTasksToJSON() ([]byte, error) { user := User { Username: "emirbarucija", FirstName: "Emir", LastName: "Baručija", } task1 := Task { Title: "First task", Description: "This is my first task in GO language", UserOfTask: user, Date: "10.04.2018.", } task2 := Task { Title: "Second task", Description: "This is my second task in GO language", UserOfTask: user, Date: "14.04.2018.", } tasks := []Task{task1, task2} b, err := json.Marshal(tasks) return b, err } func (u User) String() string { return fmt.Sprintf("Username: %v\nFirst name: %v\nLast name: %v", u.Username, u.FirstName, u.LastName) } func (t Task) String() string { return fmt.Sprintf("Title: %v\nDescription: %v\nUser: %v\nDate: %v", t.Title, t.Description, t.UserOfTask, t.Date) }