description |
---|
A hosted documentation so you can start building web apps with Fiber. |
Fiber is an Express.js styled HTTP web framework implementation running on Fasthttp, the fastest HTTP engine for Go (Golang). The package make use of similar framework convention as they are in Express.
People switching from Node.js to Go often end up in a bad learning curve to start building their web apps, this project is meant to ease things up for fast development, but with zero memory allocation and performance in mind.
First of all, download and install Go.
{% hint style="success" %} Go 1.11 (with enabled Go Modules) or higher is required. {% endhint %}
Installation is done using the go get
command:
go get -u github.com/gofiber/fiber
Embedded below is essentially simplest Fiber app, which you can create.
touch server.go
package main
import "github.com/gofiber/fiber"
func main() {
// Create new Fiber instance:
app := fiber.New()
// Create route on root path, "/":
app.Get("/", func(c *fiber.Ctx) {
c.Send("Hello, World!")
// => "Hello, World!"
})
// Start server on "localhost" with port "8080":
app.Listen(8080)
}
go run server.go
Browse to http://localhost:8080
and you should see Hello, World!
on the page.
Routing refers to determining how an application responds to a client request to a particular endpoint, which is a URI (or path) and a specific HTTP request method (GET, PUT, POST and so on).
{% hint style="info" %} Each route can have one handler function, that is executed when the route is matched. {% endhint %}
Route definition takes the following structures:
// Function signature
app.Method(func(*fiber.Ctx))
app.Method(path string, func(*fiber.Ctx))
app
is an instance of Fiber.Method
is an HTTP request method, in capitalization:Get
,Put
,Post
, etc.path
is a path on the server.func(*fiber.Ctx)
is a callback function containing the Context executed when the route is matched.
// Respond with "Hello, World!" on root path, "/":
app.Get("/", func(c *fiber.Ctx) {
c.Send("Hello, World!")
})
// GET http://localhost:8080/hello%20world
app.Get("/:value", func(c *fiber.Ctx) {
c.Send("Get request with value: " + c.Params("value"))
// => Get request with value: hello world
})
// GET http://localhost:8080/hello%20world
app.Get("/:value?", func(c *fiber.Ctx) {
if c.Params("value") != "" {
c.Send("Get request with value: " + c.Params("Value"))
// => Get request with value: hello world
return
}
c.Send("Get request without value")
})
// GET http://localhost:8080/api/user/john
app.Get("/api/*", func(c *fiber.Ctx) {
c.Send("API path with wildcard: " + c.Params("*"))
// => API path with wildcard: user/john
})
To serve static files such as images, CSS and JavaScript files, replace your function handler with a file or directory string.
Function signature:
app.Static(root string) // => without prefix
app.Static(prefix, root string) // => with prefix
Use the following code to serve files in a directory named ./public
:
app := fiber.New()
app.Static("./public") // => Serve all files into ./public
app.Listen(8080)
Now, you can load the files that are in the ./public
directory:
http://localhost:8080/hello.html
http://localhost:8080/js/jquery.js
http://localhost:8080/css/style.css