1
0
mirror of https://github.com/gofiber/fiber.git synced 2025-02-23 01:03:52 +00:00
fiber/.github/README_nl.md
2020-04-24 20:14:43 +02:00

18 KiB
Raw Blame History

Fiber


Fiber is een web framework geïnspireerd door Express gebouwd bovenop Fasthttp, de snelste HTTP-engine voor Go. Ontworpen om snelle ontwikkeling gemakkelijker te maken zonder geheugenallocatie tezamen met hoge prestaties.

Bliksemsnelle start

package main

import "github.com/gofiber/fiber"

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

  app.Get("/", func(c *fiber.Ctx) {
    c.Send("Hallo, Wereld!")
  })

  app.Listen(3000)
}

⚙️ Installatie

Allereerst, download en installeer Go. 1.11 of hoger is vereist.

Installatie wordt gedaan met behulp van het go get commando:

go get -u github.com/gofiber/fiber

🤖 Benchmarks

Deze tests zijn uitgevoerd door TechEmpower en Go Web. Bezoek onze Wiki voor alle benchmark resultaten.

🎯 Features

💡 Filosofie

Nieuwe gophers die de overstap maken van Node.js naar Go, hebben te maken met een leercurve voordat ze kunnen beginnen met het bouwen van hun webapplicaties of microservices. Fiber, als een web framework, is gebouwd met het idee van minimalisme en volgt de UNIX-manier, zodat nieuwe gophers snel de wereld van Go kunnen betreden met een warm en vertrouwd welkom.\

Fiber is geïnspireerd door Express, het populairste webframework op internet. We hebben het gemak van Express gecombineerd met de onbewerkte prestaties van Go. Als je ooit een webapplicatie in Node.js hebt geïmplementeerd (zoals Express of vergelijkbaar), dan zullen veel methoden en principes heel gewoon voor je lijken.

We luisteren naar onze gebruikers in issues (en overal op het internet) om een snelle, flexibele en vriendelijk Go web framework te maken voor elke taak, deadline en ontwikkelaar vaardigheid! Net zoals Express dat doet in de JavaScript-wereld.

👀 Voorbeelden

Hieronder staan enkele van de meest voorkomende voorbeelden.

Bekijk ons Recepten repository voor meer voorbeelden met code of bezoek onze API documentatie.

Routing

📖 https://fiber.wiki/#basic-routing

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

  // GET /john
  app.Get("/:naam", func(c *fiber.Ctx) {
    fmt.Printf("Hallo %s!", c.Params("naam"))
    // => Hallo john!
  })

  // GET /john
  app.Get("/:naam/:leeftijd?", func(c *fiber.Ctx) {
    fmt.Printf("Naam: %s, Leeftijd: %s", c.Params("naam"), c.Params("leeftijd"))
    // => Naam: john, Leeftijd:
  })

  // GET /api/registreer
  app.Get("/api/*", func(c *fiber.Ctx) {
    fmt.Printf("/api/%s", c.Params("*"))
    // => /api/registreer
  })

  app.Listen(3000)
}

Serveer statische bestanden

📖 https://fiber.wiki/application#static

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

  app.Static("/", "/public")
  // => http://localhost:3000/js/script.js
  // => http://localhost:3000/css/style.css

  app.Static("/prefix", "/public")
  // => http://localhost:3000/prefix/js/script.js
  // => http://localhost:3000/prefix/css/style.css

  app.Static("*", "/public/index.html")
  // => http://localhost:3000/any/path/shows/index/html

  app.Listen(3000)
}

Middleware & Next

📖 https://fiber.wiki/routing#middleware 📖 https://fiber.wiki/context#next

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

  // Komt overeen met elke route
  app.Use(func(c *fiber.Ctx) {
    fmt.Println("Eerste middleware")
    c.Next()
  })

  // Komt overeen met alle routes welke beginnen met /api
  app.Use("/api", func(c *fiber.Ctx) {
    fmt.Println("Tweede middleware")
    c.Next()
  })

  // GET /api/registreer
  app.Get("/api/registreer", func(c *fiber.Ctx) {
    fmt.Println("Laatste middleware")
    c.Send("Hallo, Wereld!")
  })

  app.Listen(3000)
}
📚 Bekijk meer code voorbeelden

Template engines

📖 https://fiber.wiki/application#settings
📖 https://fiber.wiki/context#render
📖 https://fiber.wiki/middleware#template

Fiber ondersteunt de standaard Go template engine

Maar het is ook mogelijk om andere template engines te gebruiken zoals amber, handlebars, mustache of pug.

Gebruik hiervoor onze Template Middleware.

package main

import (
  "github.com/gofiber/fiber"
  "github.com/gofiber/template"
)

func main() {
  // Stel een template engine in tijdens de aanvang van de app:
  app := fiber.New(&fiber.Settings{
    TemplateEngine:    template.Mustache(),
    TemplateFolder:    "./views",
    TemplateExtension: ".tmpl",
  })

  // OF na de aanvang van de app op elke geschikte locatie:
  app.Settings.TemplateEngine = template.Mustache()
  app.Settings.TemplateFolder = "./views"
  app.Settings.TemplateExtension = ".tmpl"

  // Het aanroepen van de template `./views/home.tmpl` kan als volgt:
  app.Get("/", func(c *fiber.Ctx) {
    c.Render("home", fiber.Map{
      "title": "Home",
      "year":  2020,
    })
  })

  // ...
}

Routes groeperen in chains

📖 https://fiber.wiki/application#group

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

  // Root API route
  api := app.Group("/api", cors())  // /api

  // API v1 routes
  v1 := api.Group("/v1", mysql())   // /api/v1
  v1.Get("/lijst", handler)         // /api/v1/lijst
  v1.Get("/gebruiker", handler)     // /api/v1/gebruiker

  // API v2 routes
  v2 := api.Group("/v2", mongodb()) // /api/v2
  v2.Get("/lijst", handler)         // /api/v2/lijst
  v2.Get("/gebruiker", handler)     // /api/v2/gebruiker

  // ...
}

Middleware logger

📖 https://fiber.wiki/middleware#logger

import (
    "github.com/gofiber/fiber"
    "github.com/gofiber/logger"
)

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

    // Optionele loggerconfiguratie
    config := logger.Config{
      Format:     "${time} - ${method} ${path}\n",
      TimeFormat: "Mon, 2 Jan 2006 15:04:05 MST",
    }

    // Logger met configuratie
    app.Use(logger.New(config))

    app.Listen(3000)
}

Cross-Origin Resource Sharing (CORS)

📖 https://fiber.wiki/middleware#cors

import (
    "github.com/gofiber/fiber"
    "github.com/gofiber/cors"
)

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

    // CORS met standaardconfiguratie
    app.Use(cors.New())

    app.Listen(3000)
}

Controleer CORS door een willekeurig domein in de Origin-header door te geven:

curl -H "Origin: http://google.nl" --verbose http://localhost:3000

Custom 404 response

📖 https://fiber.wiki/application#http-methods

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

  app.Static("/public")

  app.Get("/demo", func(c *fiber.Ctx) {
    c.Send("Dit is een demo!")
  })

  app.Post("/registreer", func(c *fiber.Ctx) {
    c.Send("Welkom!")
  })

  // Laatste middleware die bij alles past
  app.Use(func(c *fiber.Ctx) {
    c.SendStatus(404) 
    // => 404 "Not Found"
  })

  app.Listen(3000)
}

JSON Response

📖 https://fiber.wiki/context#json

type Gebruiker struct {
  Naam      string  `json:"naam"`
  Leeftijd  int     `json:"leeftijd"`
}

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

  app.Get("/gebruiker", func(c *fiber.Ctx) {
    c.JSON(&Gebruiker{"John", 20})
    // => {"naam":"John", "leeftijd":20}
  })

  app.Get("/json", func(c *fiber.Ctx) {
    c.JSON(fiber.Map{
      "success": true,
      "message": "Hi John!",
    })
    // => {"success":true, "message":"Hi John!"}
  })

  app.Listen(3000)
}

WebSocket Upgrade

📖 https://fiber.wiki/middleware#websocket

import (
    "github.com/gofiber/fiber"
    "github.com/gofiber/websocket"
)

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

  app.Get("/ws", websocket.New(func(c *websocket.Conn) {
    for {
      mt, msg, err := c.ReadMessage()
      if err != nil {
        log.Println("read:", err)
        break
      }
      log.Printf("recv: %s", msg)
      err = c.WriteMessage(mt, msg)
      if err != nil {
        log.Println("write:", err)
        break
      }
    }
  }))

  app.Listen(3000)
  // ws://localhost:3000/ws
}

Recover middleware

📖 https://fiber.wiki/middleware#recover

import (
    "github.com/gofiber/fiber"
    "github.com/gofiber/recover"
)

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

  // Optionele recover configuratie
  config := recover.Config{
    Handler: func(c *fiber.Ctx, err error) {
			c.SendString(err.Error())
			c.SendStatus(500)
		},
  }

  // Logger met aangepaste configuratie
  app.Use(recover.New(config))

  app.Listen(3000)
}

🧬 Beschikbare Middlewares

Voor eenvoudiger en duidelijker werk hebben we de beschikbare middleware in afzonderlijke repositories geplaatst:

💬 Media

👍 Bijdragen

Om de actieve ontwikkelingen van Fiber te ondersteunen of om een bedankje te geven:

  1. Voeg een GitHub Star toe aan het project.
  2. Tweet over het project op je Twitter account.
  3. Schrijf een recensie of tutorial op Medium, Dev.to of een persoonlijke blog.
  4. Help ons deze README naar een andere taal te vertalen.
  5. Support the project by donating a cup of coffee.

Supporters

Fiber is an open source project that runs on donations to pay the bills e.g. our domain name, gitbook, netlify and serverless hosting. If you want to support Fiber, you can buy a coffee here

User Donation
@thomasvvugt x 5
@ekaputra07 x 5
@bihe x 3
@justdave x 3
@koddr x 1
@raymayemir x 1
@melkorm x 1
@marvinjwendt x 1
@toishy x 1

💻 Code Contributors

Code Contributors

⚠️ License

Copyright (c) 2019-present Fenny and Contributors. Fiber is free and open-source software licensed under the MIT License. Official logo was created by Vic Shóstak and distributed under Creative Commons license (CC BY-SA 4.0 International).

Third-party library licenses