Advanced Guide

Overriding Default

GoFr allows overriding default behavior of its features.

Raw response format

GoFr by default wraps a handler's return value and assigns it to the "data" field in a response.

Example

package main

import "gofr.dev/pkg/gofr"

type user struct {
  ID   int    `json:"id"`
  Name string `json:"name"`
}

func main() {
  app := gofr.New()

  app.GET("/users", func(ctx *gofr.Context) (interface{}, error) {

    users := []user{{ID: 1, Name: "Daria"}, {ID: 2, Name: "Ihor"}}

    return users, nil
  })

  app.Run()
}

Response example:

{
  "data": [
    {
      "id": 1,
      "name": "Daria"
    },
    {
      "id": 2,
      "name": "Ihor"
    }
  ]
}

If you want to have a raw response structure - wrap it in response.Raw:

app.GET("/users", func(ctx *gofr.Context) (interface{}, error) {

    users := []user{{ID: 1, Name: "Daria"}, {ID: 2, Name: "Ihor"}}

    return response.Raw{Data: users}, nil	
})

Response example:

[
  {
    "id": 1,
    "name": "Daria"
  },
  {
    "id": 2,
    "name": "Ihor"
  }
]

Favicon.ico

By default GoFr load its own favicon.ico present in root directory for an application. To override favicon.ico user can place its custom icon in the static directory of its application.

NOTE: The custom favicon should also be named as favicon.ico in the static directory of application.