github.com/gofiber/fiber/v2@v2.47.0/.github/README.md (about)

     1  <p align="center">
     2    <a href="https://gofiber.io">
     3    
     4    <picture>
     5      <source height="125" media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/gofiber/docs/master/static/img/logo-dark.svg">
     6      <img height="125" alt="Fiber" src="https://raw.githubusercontent.com/gofiber/docs/master/static/img/logo.svg">
     7    </picture>
     8    
     9    </a>
    10    <br>
    11    <!-- base64 flags are available at https://www.phoca.cz/cssflags/ -->
    12     <!--<a href="https://github.com/gofiber/fiber/blob/master/.github/README.md">
    13      <img height="20px" src="https://img.shields.io/badge/EN-flag.svg?color=555555&style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNjAgMzAiIGhlaWdodD0iNjAwIj4NCjxkZWZzPg0KPGNsaXBQYXRoIGlkPSJ0Ij4NCjxwYXRoIGQ9Im0zMCwxNWgzMHYxNXp2MTVoLTMwemgtMzB2LTE1enYtMTVoMzB6Ii8+DQo8L2NsaXBQYXRoPg0KPC9kZWZzPg0KPHBhdGggZmlsbD0iIzAwMjQ3ZCIgZD0ibTAsMHYzMGg2MHYtMzB6Ii8+DQo8cGF0aCBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iNiIgZD0ibTAsMGw2MCwzMG0wLTMwbC02MCwzMCIvPg0KPHBhdGggc3Ryb2tlPSIjY2YxNDJiIiBzdHJva2Utd2lkdGg9IjQiIGQ9Im0wLDBsNjAsMzBtMC0zMGwtNjAsMzAiIGNsaXAtcGF0aD0idXJsKCN0KSIvPg0KPHBhdGggc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJtMzAsMHYzMG0tMzAtMTVoNjAiLz4NCjxwYXRoIHN0cm9rZT0iI2NmMTQyYiIgc3Ryb2tlLXdpZHRoPSI2IiBkPSJtMzAsMHYzMG0tMzAtMTVoNjAiLz4NCjwvc3ZnPg0K">
    14    </a>-->
    15    <a href="https://github.com/gofiber/fiber/blob/master/.github/README_ru.md">
    16      <img height="20px" src="https://img.shields.io/badge/RU-flag.svg?color=555555&style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NTAgMzAwIj4NCjxwYXRoIGZpbGw9IiNmZmYiIGQ9Im0wLDBoNDUwdjEwMGgtNDUweiIvPg0KPHBhdGggZmlsbD0iIzAwZiIgZD0ibTAsMTAwaDQ1MHYxMDBoLTQ1MHoiLz4NCjxwYXRoIGZpbGw9IiNmMDAiIGQ9Im0wLDIwMGg0NTB2MTAwaC00NTB6Ii8+DQo8L3N2Zz4NCg==">
    17    </a>
    18    <a href="https://github.com/gofiber/fiber/blob/master/.github/README_es.md">
    19      <img height="20px" src="https://img.shields.io/badge/ES-flag.svg?color=555555&style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA3NTAgNTAwIj4NCjxwYXRoIGZpbGw9IiNjNjBiMWUiIGQ9Im0wLDBoNzUwdjUwMGgtNzUweiIvPg0KPHBhdGggZmlsbD0iI2ZmYzQwMCIgZD0ibTAsMTI1aDc1MHYyNTBoLTc1MHoiLz4NCjwvc3ZnPg0K">
    20    </a>
    21    <a href="https://github.com/gofiber/fiber/blob/master/.github/README_ja.md">
    22      <img height="20px" src="https://img.shields.io/badge/JA-flag.svg?color=555555&style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA5MDAgNjAwIj4NCjxwYXRoIGZpbGw9IiNmZmYiIGQ9Im0wLDBoOTAwdjYwMGgtOTAweiIvPg0KPGNpcmNsZSBmaWxsPSIjYmUwMDI2IiBjeD0iNDUwIiBjeT0iMzAwIiByPSIxODAiLz4NCjwvc3ZnPg0K">
    23    </a>
    24    <a href="https://github.com/gofiber/fiber/blob/master/.github/README_pt.md">
    25      <img height="20px" src="https://img.shields.io/badge/PT-flag.svg?color=555555&style=flat-square&logo=data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTkuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUxMiA1MTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHJlY3QgeT0iODUuMzM3IiBzdHlsZT0iZmlsbDojRDgwMDI3OyIgd2lkdGg9IjUxMiIgaGVpZ2h0PSIzNDEuMzI2Ii8+Cjxwb2x5Z29uIHN0eWxlPSJmaWxsOiM2REE1NDQ7IiBwb2ludHM9IjE5Ni42NDEsODUuMzM3IDE5Ni42NDEsMjYxLjU2NSAxOTYuNjQxLDQyNi42NjMgMCw0MjYuNjYzIDAsODUuMzM3ICIvPgo8Y2lyY2xlIHN0eWxlPSJmaWxsOiNGRkRBNDQ7IiBjeD0iMTk2LjY0MSIgY3k9IjI1NiIgcj0iNjQiLz4KPHBhdGggc3R5bGU9ImZpbGw6I0Q4MDAyNzsiIGQ9Ik0xNjAuNjM4LDIyNHY0MC4wMDFjMCwxOS44ODIsMTYuMTE4LDM2LDM2LDM2czM2LTE2LjExOCwzNi0zNlYyMjRIMTYwLjYzOHoiLz4KPHBhdGggc3R5bGU9ImZpbGw6I0YwRjBGMDsiIGQ9Ik0xOTYuNjM4LDI3NmMtNi42MTcsMC0xMi01LjM4My0xMi0xMnYtMTZoMjQuMDAxdjE2QzIwOC42MzgsMjcwLjYxNiwyMDMuMjU0LDI3NiwxOTYuNjM4LDI3NnoiLz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+Cg==">
    26    </a>
    27    <a href="https://github.com/gofiber/fiber/blob/master/.github/README_zh-CN.md">
    28      <img height="20px" src="https://img.shields.io/badge/CN-flag.svg?color=555555&style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMjAwIDgwMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPg0KPHBhdGggZmlsbD0iI2RlMjkxMCIgZD0ibTAsMGgxMjAwdjgwMGgtMTIwMHoiLz4NCjxwYXRoIGZpbGw9IiNmZmRlMDAiIGQ9Im0tMTYuNTc5Niw5OS42MDA3bDIuMzY4Ni04LjEwMzItNi45NTMtNC43ODgzIDguNDM4Ni0uMjUxNCAyLjQwNTMtOC4wOTI0IDIuODQ2Nyw3Ljk0NzkgOC40Mzk2LS4yMTMxLTYuNjc5Miw1LjE2MzQgMi44MTA2LDcuOTYwNy02Ljk3NDctNC43NTY3LTYuNzAyNSw1LjEzMzF6IiB0cmFuc2Zvcm09Im1hdHJpeCg5LjkzMzUyIC4yNzc0NyAtLjI3NzQ3IDkuOTMzNTIgMzI0LjI5MjUgLTY5NS4yNDE1KSIvPg0KPHBhdGggZmlsbD0iI2ZmZGUwMCIgaWQ9InN0YXIiIGQ9Im0zNjUuODU1MiwzMzIuNjg5NWwyOC4zMDY4LDExLjM3NTcgMTkuNjcyMi0yMy4zMTcxLTIuMDcxNiwzMC40MzY3IDI4LjI1NDksMTEuNTA0LTI5LjU4NzIsNy40MzUyLTIuMjA5NywzMC40MjY5LTE2LjIxNDItMjUuODQxNS0yOS42MjA2LDcuMzAwOSAxOS41NjYyLTIzLjQwNjEtMTYuMDk2OC0yNS45MTQ4eiIvPg0KPGcgZmlsbD0iI2ZmZGUwMCI+DQo8cGF0aCBkPSJtNTE5LjA3NzksMTc5LjMxMjlsLTMwLjA1MzQtNS4yNDE4LTE0LjM5NDUsMjYuODk3Ni00LjMwMTctMzAuMjAyMy0zMC4wMjkzLTUuMzc4MSAyNy4zOTQ4LTEzLjQyNDItNC4xNjQ3LTMwLjIyMTUgMjEuMjMyNiwyMS45MDU3IDI3LjQ1NTQtMTMuMjk5OC0xNC4yNzIzLDI2Ljk2MjcgMjEuMTMzMSwyMi4wMDE3eiIvPg0KPHBhdGggZD0ibTQ1NS4yNTkyLDMxNS45Nzk1bDkuMzczNC0yOS4wMzE0LTI0LjYzMjUtMTcuOTk3OCAzMC41MDctLjA1NjYgOS41MDUtMjguOTg4NiA5LjQ4MSwyOC45OTY0IDMwLjUwNywuMDgxOC0yNC42NDc0LDE3Ljk3NzQgOS4zNDkzLDI5LjAzOTItMjQuNzE0LTE3Ljg4NTgtMjQuNzI4OCwxNy44NjUzeiIvPg0KPC9nPg0KPHVzZSB4bGluazpocmVmPSIjc3RhciIgdHJhbnNmb3JtPSJtYXRyaXgoLjk5ODYzIC4wNTIzNCAtLjA1MjM0IC45OTg2MyAxOS40MDAwNSAtMzAwLjUzNjgxKSIvPg0KPC9zdmc+DQo=">
    29    </a>
    30    <a href="https://github.com/gofiber/fiber/blob/master/.github/README_zh-TW.md">
    31      <img height="20px" src="https://img.shields.io/badge/TW-flag.svg?color=555555&style=flat-square&logo=data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjwhRE9DVFlQRSBzdmc+DQo8c3ZnIHdpZHRoPSI5MDAiIGhlaWdodD0iNjAwIiB2aWV3Qm94PSItNjAgLTQwIDI0MCAxNjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPg0KICAgPHJlY3QgeD0iLTYwIiB5PSItNDAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9IiNmZTAwMDAiLz4NCiAgIDxyZWN0IHg9Ii02MCIgeT0iLTQwIiB3aWR0aD0iNTAlIiBoZWlnaHQ9IjUwJSIgZmlsbD0iIzAwMDA5NSIvPg0KICAgPHBhdGggaWQ9ImZvdXJfcmF5cyIgZD0iTSA4LDAgTCAwLDMwIEwgLTgsMCBMIDAsLTMwIE0gMCw4IEwgMzAsMCBMIDAsLTggTCAtMzAsMCIgZmlsbD0iI2ZmZiIvPg0KICAgPHVzZSB4bGluazpocmVmPSIjZm91cl9yYXlzIiB0cmFuc2Zvcm09InJvdGF0ZSgzMCkiLz4NCiAgIDx1c2UgeGxpbms6aHJlZj0iI2ZvdXJfcmF5cyIgdHJhbnNmb3JtPSJyb3RhdGUoNjApIi8+DQogICA8Y2lyY2xlIHI9IjE3IiBmaWxsPSIjMDAwMDk1Ii8+DQogICA8Y2lyY2xlIHI9IjE1IiBmaWxsPSIjZmZmIi8+DQo8L3N2Zz4=">
    32    </a>
    33    <a href="https://github.com/gofiber/fiber/blob/master/.github/README_de.md">
    34      <img height="20px" src="https://img.shields.io/badge/DE-flag.svg?color=555555&style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBoZWlnaHQ9IjYwMCIgdmlld0JveD0iMCAwIDUgMyI+DQo8cGF0aCBkPSJtMCwwaDV2M2gtNXoiLz4NCjxwYXRoIGZpbGw9IiNkMDAiIGQ9Im0wLDFoNXYyaC01eiIvPg0KPHBhdGggZmlsbD0iI2ZmY2UwMCIgZD0ibTAsMmg1djFoLTV6Ii8+DQo8L3N2Zz4NCg==">
    35    </a>
    36    <a href="https://github.com/gofiber/fiber/blob/master/.github/README_nl.md">
    37      <img height="20px" src="https://img.shields.io/badge/NL-flag.svg?color=555555&style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iNjAwIiB2aWV3Qm94PSIwIDAgOSA2Ij4NCjxwYXRoIGZpbGw9IiMyMTQ2OGIiIGQ9Im0wLDBoOXY2aC05eiIvPg0KPHBhdGggZmlsbD0iI2ZmZiIgZD0ibTAsMGg5djRoLTl6Ii8+DQo8cGF0aCBmaWxsPSIjYWUxYzI4IiBkPSJtMCwwaDl2MmgtOXoiLz4NCjwvc3ZnPg0K">
    38    </a>
    39    <a href="https://github.com/gofiber/fiber/blob/master/.github/README_ko.md">
    40      <img height="20px" src="https://img.shields.io/badge/KO-flag.svg?color=555555&style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iNjAwIiB2aWV3Qm94PSItMzYgLTI0IDcyIDQ4IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+DQo8cGF0aCBmaWxsPSIjZmZmIiBkPSJtLTM2LTI0aDcydjQ4aC03MnoiLz4NCjxnIHRyYW5zZm9ybT0ibWF0cml4KC41NTQ3IC0uODMyMDUgLjgzMjA1IC41NTQ3IDAgMCkiPg0KPGcgaWQ9ImIyIj4NCjxwYXRoIHN0cm9rZT0iIzAwMCIgaWQ9ImIiIHN0cm9rZS13aWR0aD0iMiIgZD0iTS02LTI1SDZNLTYtMjJINk0tNi0xOUg2Ii8+DQo8dXNlIHk9IjQ0IiB4bGluazpocmVmPSIjYiIvPg0KPC9nPg0KPHBhdGggc3Ryb2tlPSIjZmZmIiBkPSJtMCwxN3YxMCIvPg0KPGNpcmNsZSBmaWxsPSIjYzYwYzMwIiByPSIxMiIvPg0KPHBhdGggZmlsbD0iIzAwMzQ3OCIgZD0iTTAtMTJBNiw2IDAgMCAwIDAsMEE2LDYgMCAwIDEgMCwxMkExMiwxMiAwIDAsMSAwLTEyWiIvPg0KPC9nPg0KPGcgdHJhbnNmb3JtPSJtYXRyaXgoLS41NTQ3IC0uODMyMDUgLjgzMjA1IC0uNTU0NyAwIDApIj4NCjx1c2UgeGxpbms6aHJlZj0iI2IyIi8+DQo8cGF0aCBzdHJva2U9IiNmZmYiIGQ9Im0wLTIzLjV2M20wLDM3LjV2My41bTAsM3YzIi8+DQo8L2c+DQo8L3N2Zz4NCg==">
    41    </a>
    42    <a href="https://github.com/gofiber/fiber/blob/master/.github/README_fr.md">
    43      <img height="20px" src="https://img.shields.io/badge/FR-flag.svg?color=555555&style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA5MDAgNjAwIj4NCjxwYXRoIGZpbGw9IiNlZDI5MzkiIGQ9Im0wLDBoOTAwdjYwMGgtOTAweiIvPg0KPHBhdGggZmlsbD0iI2ZmZiIgZD0ibTAsMGg2MDB2NjAwaC02MDB6Ii8+DQo8cGF0aCBmaWxsPSIjMDAyMzk1IiBkPSJtMCwwaDMwMHY2MDBoLTMwMHoiLz4NCjwvc3ZnPg0K">
    44    </a>
    45    <a href="https://github.com/gofiber/fiber/blob/master/.github/README_tr.md">
    46      <img height="20px" src="https://img.shields.io/badge/TR-flag.svg?color=555555&style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBoZWlnaHQ9IjgwMCIgdmlld0JveD0iMCAwIDM2MCAyNDAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4NCjxwYXRoIGZpbGw9IiNlMzBhMTciIGQ9Im0wLDBoMzYwdjI0MGgtMzYweiIvPg0KPGNpcmNsZSBmaWxsPSIjZmZmIiBjeD0iMTIwIiBjeT0iMTIwIiByPSI2MCIvPg0KPGNpcmNsZSBmaWxsPSIjZTMwYTE3IiBjeD0iMTM1IiBjeT0iMTIwIiByPSI0OCIvPg0KPGcgZmlsbD0iI2ZmZiIgdHJhbnNmb3JtPSJtYXRyaXgoMCAtMzAgMzAgMCAyMDAuNyAxMjApIj4NCjxnIGlkPSJnMiI+DQo8cGF0aCBpZD0iZzEiIGQ9Im0wLDAgMCwxIC41LDB6IiB0cmFuc2Zvcm09Im1hdHJpeCguOTUxMDYgLjMwOTAyIC0uMzA5MDIgLjk1MTA2IDAgLTEpIi8+DQo8dXNlIHhsaW5rOmhyZWY9IiNnMSIgdHJhbnNmb3JtPSJzY2FsZSgtMSAxKSIvPg0KPC9nPg0KPHVzZSB4bGluazpocmVmPSIjZzIiIHRyYW5zZm9ybT0icm90YXRlKDcyKSIvPg0KPHVzZSB4bGluazpocmVmPSIjZzIiIHRyYW5zZm9ybT0ibWF0cml4KC4zMDkwMiAtLjk1MTA2IC45NTEwNiAuMzA5MDIgMCAwKSIvPg0KPHVzZSB4bGluazpocmVmPSIjZzIiIHRyYW5zZm9ybT0icm90YXRlKDE0NCkiLz4NCjx1c2UgeGxpbms6aHJlZj0iI2cyIiB0cmFuc2Zvcm09Im1hdHJpeCgtLjgwOTAyIC0uNTg3NzkgLjU4Nzc5IC0uODA5MDIgMCAwKSIvPg0KPC9nPg0KPC9zdmc+DQo=">
    47    </a>
    48    <a href="https://github.com/gofiber/fiber/blob/master/.github/README_id.md">
    49      <img height="20px" src="https://img.shields.io/badge/ID-flag.svg?color=555555&style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MDAgNDAwIj4NCjxwYXRoIGZpbGw9IiNjZTExMjYiIGQ9Im0wLDBoNjAwdjIwMGgtNjAweiIvPg0KPHBhdGggZmlsbD0iI2ZmZiIgZD0ibTAsMjAwaDYwMHYyMDBoLTYwMHoiLz4NCjwvc3ZnPg0K">
    50    </a>
    51    <a href="https://github.com/gofiber/fiber/blob/master/.github/README_he.md">
    52      <img height="20px" src="https://img.shields.io/badge/HE-flag.svg?color=555555&style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjYwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iNDgwIiB2aWV3Qm94PSIwIDAgMjIwIDE2MCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPg0KPGRlZnM+DQo8cGF0aCBzdHJva2U9IiMwMDM4YjgiIGZpbGwtb3BhY2l0eT0iMCIgaWQ9InRyaWFuZ2xlIiBzdHJva2Utd2lkdGg9IjUuNSIgZD0ibTAtMjkuMTQxLTI1LjIzNjksNDMuNzExNSA1MC40NzM4LTB6Ii8+DQo8L2RlZnM+DQo8cGF0aCBmaWxsPSIjZmZmIiBkPSJtMCwwaDIyMHYxNjBoLTIyMHoiLz4NCjxnIGZpbGw9IiMwMDM4YjgiPg0KPHBhdGggZD0ibTAsMTVoMjIwdjI1aC0yMjB6Ii8+DQo8cGF0aCBkPSJtMCwxMjBoMjIwdjI1aC0yMjB6Ii8+DQo8L2c+DQo8dXNlIHhsaW5rOmhyZWY9IiN0cmlhbmdsZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTEwIDgwKSIvPg0KPHVzZSB4bGluazpocmVmPSIjdHJpYW5nbGUiIHRyYW5zZm9ybT0ibWF0cml4KC0xIDAgLTAgLTEgMTEwIDgwKSIvPg0KPC9zdmc+DQo=">
    53    </a>
    54     <a href="https://github.com/gofiber/fiber/blob/master/.github/README_sa.md">
    55       <img height="20px" src="https://img.shields.io/badge/SA-flag.svg?color=555555&style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBoZWlnaHQ9IjYwMCIgdmlld0JveD0iMCAwIDEyIDYiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4NCjxwYXRoIGZpbGw9IiNjZTExMjYiIGQ9Im0wLDBoM3Y2aC0zeiIvPg0KPHBhdGggZmlsbD0iIzAwOWEwMCIgZD0ibTMsMGg5djJoLTl6Ii8+DQo8cGF0aCBmaWxsPSIjZmZmIiBkPSJtMywyaDl2MmgtOXoiLz4NCjxwYXRoIGQ9Im0zLDRoOXYyaC05eiIvPg0KPC9zdmc+DQo=">
    56     </a>
    57           <a href="https://github.com/gofiber/fiber/blob/master/.github/README_fa.md">
    58       <img height="20px" src="https://img.shields.io/badge/IR-flag.svg?color=555555&style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTAwMCIgaGVpZ2h0PSI1NzIuMiIgdmlld0JveD0iLTcuMjE3IC00LjEyOSAxMDAwIDU3Mi4yIj48cGF0aCBkPSJNLTcuMjE3LTQuMTI5aDEwMDB2NTcyLjJoLTEwMDB6IiBmaWxsPSIjMjM5ZjQwIi8+PHBhdGggZD0iTS03LjIxNyAyODEuOTcxaDEwMDB2Mjg2LjFoLTEwMDB6IiBmaWxsPSIjZGEwMDAwIi8+PHBhdGggZD0iTS03LjIxNyAxODYuNTcxaDEwMDB2MTkwLjc1aC0xMDAweiIgZmlsbD0iI2ZmZiIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC03LjIxNyAxNTUuNDcxKSBzY2FsZSg0LjQ0NDUpIj48ZyBpZD0iZSI+PGcgaWQ9ImMiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2ZmZiI+PHBhdGggaWQ9ImIiIGQ9Ik0zIC41aDEzTTMuNSA1VjIuNWg0djJoNHYtMkg5bS00IDJoMW0xMCAwaC0yLjV2LTJoNG0wLTIuNXY0LjVoNFYwbS0yIDB2NC41Ii8+PHBhdGggaWQ9ImEiIGQ9Ik0zIDdoOW0xIDBoOSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeT0iNDIuOTEzIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIi8+PHVzZSB4bGluazpocmVmPSIjYiIgeT0iNTEuOTEzIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIi8+PC9nPjxnIGlkPSJkIj48dXNlIHhsaW5rOmhyZWY9IiNjIiB4PSIyMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIvPjx1c2UgeGxpbms6aHJlZj0iI2MiIHg9IjQwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIi8+PHVzZSB4bGluazpocmVmPSIjYyIgeD0iNjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiLz48L2c+PC9nPjx1c2UgeGxpbms6aHJlZj0iI2QiIHg9IjYwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIi8+PHVzZSB4bGluazpocmVmPSIjZSIgeD0iMTQwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIi8+PC9nPjxnIHRyYW5zZm9ybT0ibWF0cml4KDY5LjI4NSAwIDAgNjkuMjg1IDQ5Mi43ODMgMjgxLjk3MSkiIGZpbGw9IiNkYTAwMDAiPjxnIGlkPSJmIj48cGF0aCBkPSJNLS41NDguODM2QS45MTIuOTEyIDAgMCAwIC4zMjktLjcyMiAxIDEgMCAwIDEtLjU0OC44MzYiLz48cGF0aCBkPSJNLjYxOC42NjFBLjc2NC43NjQgMCAwIDAgLjQyMi0uNzQgMSAxIDAgMCAxIC42MTguNjYxTTAgMWwtLjA1LTFMMC0uNzg3YS4zMS4zMSAwIDAgMCAuMTE4LjA5OVYtLjFsLS4wNC45OTN6TS0uMDItLjg1TDAtLjgzMWEuMTQ0LjE0NCAwIDAgMCAuMjUyLS4xMzdBLjEzNi4xMzYgMCAwIDEgMC0uOTI1Ii8+PC9nPjx1c2UgeGxpbms6aHJlZj0iI2YiIHRyYW5zZm9ybT0ic2NhbGUoLTEgMSkiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiLz48L2c+PC9zdmc+">
    59     </a>
    60    <a href="https://github.com/gofiber/fiber/blob/master/.github/README_it.md">
    61      <img height="20px" src="https://img.shields.io/badge/IT-flag.svg?color=555555&style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBoZWlnaHQ9IjEwMDAiIHZpZXdCb3g9IjAgMCAzIDIiPg0KPHBhdGggZmlsbD0iIzAwOTI0NiIgZD0ibTAsMGgxdjJoLTF6Ii8+DQo8cGF0aCBmaWxsPSIjZmZmIiBkPSJtMSwwaDF2MmgtMXoiLz4NCjxwYXRoIGZpbGw9IiNjZTJiMzciIGQ9Im0yLDBoMXYyaC0xeiIvPg0KPC9zdmc+DQo=">
    62    </a>
    63    <a href="https://github.com/gofiber/fiber/blob/master/.github/README_ckb.md">
    64      <img height="20px" src="https://img.shields.io/badge/CKB-flag.svg?color=555555&style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5MDAiIGhlaWdodD0iNjAwIj48ZyBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0wIDBoOTAwdjYwMEgweiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik0wIDBoOTAwdjIwMEgweiIgZmlsbD0iI2VkMjAyNCIvPjxwYXRoIGQ9Ik0wIDQwMGg5MDB2MjAwSDB6IiBmaWxsPSIjMjc4ZTQzIi8+PC9nPjxwYXRoIGQ9Ik00NTAgMTUwbDExLjI0IDc2LjI2NCAzMy4yMjItNjkuNTYzLTExLjczOCA3Ni4xOSA1Mi4yNDktNTYuNjgtMzMuNjc0IDY5LjM0NCA2Ni42MzQtMzguNzYxLTUyLjYxNiA1Ni4zMzggNzUuMDk4LTE3LjM5OS02Ni44ODUgMzguMzI3IDc2Ljg5IDUuNTEtNzUuMjEgMTYuOTA5IDcxLjg1IDI3LjkyOS03Ni44NTItNi4wMTEgNjAuNDI1IDQ3Ljg2Ny03MS42NjYtMjguMzk3IDQzLjYzMiA2My41NS02MC4xMTMtNDguMjU5IDIyLjk2MiA3My41ODktNDMuMjE3LTYzLjgzNC4yNSA3Ny4wODdMNDUwIDM3Ni4yNjQgNDI3LjUxOCA0NTBsLjI1MS03Ny4wODctNDMuMjE3IDYzLjgzNCAyMi45NjItNzMuNTg5LTYwLjExMyA0OC4yNiA0My42MzItNjMuNTUxLTcxLjY2NiAyOC4zOTcgNjAuNDI1LTQ3Ljg2Ny03Ni44NTIgNi4wMTEgNzEuODUtMjcuOTMtNzUuMjEtMTYuOTA4IDc2Ljg5LTUuNTEtNjYuODg1LTM4LjMyNyA3NS4wOTggMTcuMzk5LTUyLjYxNi01Ni4zMzggNjYuNjM0IDM4Ljc2LTMzLjY3NC02OS4zNDMgNTIuMjQ5IDU2LjY4LTExLjczOC03Ni4xOSAzMy4yMjEgNjkuNTYzeiIgZmlsbD0iI2ZlYmQxMSIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+">
    65    </a>
    66    <a href="https://github.com/gofiber/fiber/blob/master/.github/README_uk.md">
    67      <img height="20px" src="https://img.shields.io/badge/UK-flag.svg?color=555555&style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDU1LjIgMzguNCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTUuMiAzOC40IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWwoJLnN0MHtmaWxsOiNGRkQ1MDA7fQoJLnN0MXtmaWxsOiMwMDVCQkI7fQpdXT48L3N0eWxlPjxnPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0zLjAzLDBoNDkuMTNjMS42NywwLDMuMDMsMS4zNiwzLjAzLDMuMDN2MzIuMzNjMCwxLjY3LTEuMzcsMy4wMy0zLjAzLDMuMDNIMy4wM0MxLjM3LDM4LjQsMCwzNy4wNCwwLDM1LjM3IFYzLjAzQzAsMS4zNiwxLjM3LDAsMy4wMywwTDMuMDMsMHoiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNMCwxOS4yaDU1LjJ2MTYuMTdjMCwxLjY3LTEuMzcsMy4wMy0zLjAzLDMuMDNIMy4wM0MxLjM3LDM4LjQsMCwzNy4wNCwwLDM1LjM3VjE5LjJMMCwxOS4yeiIvPjwvZz48L3N2Zz4=">
    68    </a>
    69    <a href="https://github.com/gofiber/fiber/blob/master/.github/README_az.md">
    70      <img height="20px" src="https://img.shields.io/badge/AZ-flag.svg?color=555555&style=flat-square&logo=data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMTIwMCIgaGVpZ2h0PSI2MDAiPg0KPHJlY3Qgd2lkdGg9IjEyMDAiIGhlaWdodD0iNjAwIiBmaWxsPSIjNTA5ZTJmIi8+DQo8cmVjdCB3aWR0aD0iMTIwMCIgaGVpZ2h0PSI0MDAiIGZpbGw9IiNlZjMzNDAiLz4NCjxyZWN0IHdpZHRoPSIxMjAwIiBoZWlnaHQ9IjIwMCIgZmlsbD0iIzAwYjVlMiIvPg0KPGNpcmNsZSBjeD0iNTcwIiBjeT0iMzAwIiByPSI5MCIgZmlsbD0iI2ZmZiIvPg0KPGNpcmNsZSBjeD0iNTkwIiBjeT0iMzAwIiByPSI3NSIgZmlsbD0iI2VmMzM0MCIvPg0KPHBhdGggZD0iTTY3MCAyNTBsOS41NjcgMjYuOTAzIDI1Ljc4OC0xMi4yNTgtMTIuMjU4IDI1Ljc4OEw3MjAgMzAwbC0yNi45MDMgOS41NjcgMTIuMjU4IDI1Ljc4OC0yNS43ODgtMTIuMjU4TDY3MCAzNTBsLTkuNTY3LTI2LjkwMy0yNS43ODggMTIuMjU4IDEyLjI1OC0yNS43ODhMNjIwIDMwMGwyNi45MDMtOS41NjctMTIuMjU4LTI1Ljc4OCAyNS43ODggMTIuMjU4eiIgZmlsbD0iI2ZmZiIvPg0KPC9zdmc+">
    71    </a>
    72    <br>
    73    <a href="https://pkg.go.dev/github.com/gofiber/fiber/v2#pkg-overview">
    74      <img src="https://img.shields.io/badge/%F0%9F%93%9A%20godoc-pkg-00ACD7.svg?color=00ACD7&style=flat-square">
    75    </a>
    76    <a href="https://goreportcard.com/report/github.com/gofiber/fiber/v2">
    77      <img src="https://img.shields.io/badge/%F0%9F%93%9D%20goreport-A%2B-75C46B?style=flat-square">
    78    </a>
    79    <a href="https://gocover.io/github.com/gofiber/fiber">
    80      <img src="https://img.shields.io/badge/%F0%9F%94%8E%20gocover-97.8%25-75C46B.svg?style=flat-square">
    81    </a>
    82    <a href="https://github.com/gofiber/fiber/actions?query=workflow%3ASecurity">
    83      <img src="https://img.shields.io/github/actions/workflow/status/gofiber/fiber/security.yml?branch=master&label=%F0%9F%94%91%20gosec&style=flat-square&color=75C46B">
    84    </a>
    85    <a href="https://github.com/gofiber/fiber/actions?query=workflow%3ATest">
    86      <img src="https://img.shields.io/github/actions/workflow/status/gofiber/fiber/test.yml?branch=master&label=%F0%9F%A7%AA%20tests&style=flat-square&color=75C46B">
    87    </a>
    88      <a href="https://docs.gofiber.io">
    89      <img src="https://img.shields.io/badge/%F0%9F%92%A1%20fiber-docs-00ACD7.svg?style=flat-square">
    90    </a>
    91    <a href="https://gofiber.io/discord">
    92      <img src="https://img.shields.io/discord/704680098577514527?style=flat-square&label=%F0%9F%92%AC%20discord&color=00ACD7">
    93    </a>
    94  
    95  </p>
    96  <p align="center">
    97    <b>Fiber</b> is an <a href="https://github.com/expressjs/express">Express</a> inspired <b>web framework</b> built on top of <a href="https://github.com/valyala/fasthttp">Fasthttp</a>, the <b>fastest</b> HTTP engine for <a href="https://go.dev/doc/">Go</a>. Designed to <b>ease</b> things up for <b>fast</b> development with <b>zero memory allocation</b> and <b>performance</b> in mind.
    98  </p>
    99  
   100  ## ⚑️ Quickstart
   101  
   102  ```go
   103  package main
   104  
   105  import "github.com/gofiber/fiber/v2"
   106  
   107  func main() {
   108      app := fiber.New()
   109  
   110      app.Get("/", func(c *fiber.Ctx) error {
   111          return c.SendString("Hello, World πŸ‘‹!")
   112      })
   113  
   114      app.Listen(":3000")
   115  }
   116  ```
   117  
   118  ## πŸ€– Benchmarks
   119  
   120  These tests are performed by [TechEmpower](https://www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=plaintext) and [Go Web](https://github.com/smallnest/go-web-framework-benchmark). If you want to see all the results, please visit our [Wiki](https://docs.gofiber.io/extra/benchmarks).
   121  
   122  <p float="left" align="middle">
   123    <img src="https://raw.githubusercontent.com/gofiber/docs/master/static/img/benchmark-pipeline.png" width="49%">
   124    <img src="https://raw.githubusercontent.com/gofiber/docs/master/static/img/benchmark_alloc.png" width="49%">
   125  </p>
   126  
   127  ## βš™οΈ Installation
   128  
   129  Make sure you have Go installed ([download](https://go.dev/dl/)). Version `1.17` or higher is required.
   130  
   131  Initialize your project by creating a folder and then running `go mod init github.com/your/repo` ([learn more](https://go.dev/blog/using-go-modules)) inside the folder. Then install Fiber with the [`go get`](https://pkg.go.dev/cmd/go/#hdr-Add_dependencies_to_current_module_and_install_them) command:
   132  
   133  ```bash
   134  go get -u github.com/gofiber/fiber/v2
   135  ```
   136  
   137  ## 🎯 Features
   138  
   139  -   Robust [routing](https://docs.gofiber.io/guide/routing)
   140  -   Serve [static files](https://docs.gofiber.io/api/app#static)
   141  -   Extreme [performance](https://docs.gofiber.io/extra/benchmarks)
   142  -   [Low memory](https://docs.gofiber.io/extra/benchmarks) footprint
   143  -   [API endpoints](https://docs.gofiber.io/api/ctx)
   144  -   [Middleware](https://docs.gofiber.io/category/-middleware) & [Next](https://docs.gofiber.io/api/ctx#next) support
   145  -   [Rapid](https://dev.to/koddr/welcome-to-fiber-an-express-js-styled-fastest-web-framework-written-with-on-golang-497) server-side programming
   146  -   [Template engines](https://github.com/gofiber/template)
   147  -   [WebSocket support](https://github.com/gofiber/websocket)
   148  -   [Server-Sent events](https://github.com/gofiber/recipes/tree/master/sse)
   149  -   [Rate Limiter](https://docs.gofiber.io/api/middleware/limiter)
   150  -   Translated in [18 languages](https://docs.gofiber.io/)
   151  -   And much more, [explore Fiber](https://docs.gofiber.io/)
   152  
   153  ## πŸ’‘ Philosophy
   154  
   155  New gophers that make the switch from [Node.js](https://nodejs.org/en/about/) to [Go](https://go.dev/doc/) are dealing with a learning curve before they can start building their web applications or microservices. Fiber, as a **web framework**, was created with the idea of **minimalism** and follows the **UNIX way**, so that new gophers can quickly enter the world of Go with a warm and trusted welcome.
   156  
   157  Fiber is **inspired** by Express, the most popular web framework on the Internet. We combined the **ease** of Express and **raw performance** of Go. If you have ever implemented a web application in Node.js (_using Express or similar_), then many methods and principles will seem **very common** to you.
   158  
   159  We **listen** to our users in [issues](https://github.com/gofiber/fiber/issues), Discord [channel](https://gofiber.io/discord) _and all over the Internet_ to create a **fast**, **flexible** and **friendly** Go web framework for **any** task, **deadline** and developer **skill**! Just like Express does in the JavaScript world.
   160  
   161  ## ⚠️ Limitations
   162  * Due to Fiber's usage of unsafe, the library may not always be compatible with the latest Go version. Fiber 2.40.0 has been tested with Go versions 1.17 to 1.20.
   163  * Fiber is not compatible with net/http interfaces. This means you will not be able to use projects like gqlgen, go-swagger, or any others which are part of the net/http ecosystem.
   164  
   165  ## πŸ‘€ Examples
   166  
   167  Listed below are some of the common examples. If you want to see more code examples, please visit our [Recipes repository](https://github.com/gofiber/recipes) or visit our hosted [API documentation](https://docs.gofiber.io).
   168  
   169  #### πŸ“– [**Basic Routing**](https://docs.gofiber.io/#basic-routing)
   170  
   171  ```go
   172  func main() {
   173      app := fiber.New()
   174  
   175      // GET /api/register
   176      app.Get("/api/*", func(c *fiber.Ctx) error {
   177          msg := fmt.Sprintf("βœ‹ %s", c.Params("*"))
   178          return c.SendString(msg) // => βœ‹ register
   179      })
   180  
   181      // GET /flights/LAX-SFO
   182      app.Get("/flights/:from-:to", func(c *fiber.Ctx) error {
   183          msg := fmt.Sprintf("πŸ’Έ From: %s, To: %s", c.Params("from"), c.Params("to"))
   184          return c.SendString(msg) // => πŸ’Έ From: LAX, To: SFO
   185      })
   186  
   187      // GET /dictionary.txt
   188      app.Get("/:file.:ext", func(c *fiber.Ctx) error {
   189          msg := fmt.Sprintf("πŸ“ƒ %s.%s", c.Params("file"), c.Params("ext"))
   190          return c.SendString(msg) // => πŸ“ƒ dictionary.txt
   191      })
   192  
   193      // GET /john/75
   194      app.Get("/:name/:age/:gender?", func(c *fiber.Ctx) error {
   195          msg := fmt.Sprintf("πŸ‘΄ %s is %s years old", c.Params("name"), c.Params("age"))
   196          return c.SendString(msg) // => πŸ‘΄ john is 75 years old
   197      })
   198  
   199      // GET /john
   200      app.Get("/:name", func(c *fiber.Ctx) error {
   201          msg := fmt.Sprintf("Hello, %s πŸ‘‹!", c.Params("name"))
   202          return c.SendString(msg) // => Hello john πŸ‘‹!
   203      })
   204  
   205      log.Fatal(app.Listen(":3000"))
   206  }
   207  
   208  ```
   209  
   210  #### πŸ“– [**Route Naming**](https://docs.gofiber.io/api/app#name)
   211  
   212  ```go
   213  func main() {
   214      app := fiber.New()
   215  
   216      // GET /api/register
   217      app.Get("/api/*", func(c *fiber.Ctx) error {
   218          msg := fmt.Sprintf("βœ‹ %s", c.Params("*"))
   219          return c.SendString(msg) // => βœ‹ register
   220      }).Name("api")
   221  
   222      data, _ := json.MarshalIndent(app.GetRoute("api"), "", "  ")
   223      fmt.Print(string(data))
   224      // Prints:
   225      // {
   226      //    "method": "GET",
   227      //    "name": "api",
   228      //    "path": "/api/*",
   229      //    "params": [
   230      //      "*1"
   231      //    ]
   232      // }
   233  
   234  
   235      log.Fatal(app.Listen(":3000"))
   236  }
   237  
   238  ```
   239  
   240  #### πŸ“– [**Serving Static Files**](https://docs.gofiber.io/api/app#static)
   241  
   242  ```go
   243  func main() {
   244      app := fiber.New()
   245  
   246      app.Static("/", "./public")
   247      // => http://localhost:3000/js/script.js
   248      // => http://localhost:3000/css/style.css
   249  
   250      app.Static("/prefix", "./public")
   251      // => http://localhost:3000/prefix/js/script.js
   252      // => http://localhost:3000/prefix/css/style.css
   253  
   254      app.Static("*", "./public/index.html")
   255      // => http://localhost:3000/any/path/shows/index/html
   256  
   257      log.Fatal(app.Listen(":3000"))
   258  }
   259  
   260  ```
   261  
   262  #### πŸ“– [**Middleware & Next**](https://docs.gofiber.io/api/ctx#next)
   263  
   264  ```go
   265  func main() {
   266      app := fiber.New()
   267  
   268      // Match any route
   269      app.Use(func(c *fiber.Ctx) error {
   270          fmt.Println("πŸ₯‡ First handler")
   271          return c.Next()
   272      })
   273  
   274      // Match all routes starting with /api
   275      app.Use("/api", func(c *fiber.Ctx) error {
   276          fmt.Println("πŸ₯ˆ Second handler")
   277          return c.Next()
   278      })
   279  
   280      // GET /api/list
   281      app.Get("/api/list", func(c *fiber.Ctx) error {
   282          fmt.Println("πŸ₯‰ Last handler")
   283          return c.SendString("Hello, World πŸ‘‹!")
   284      })
   285  
   286      log.Fatal(app.Listen(":3000"))
   287  }
   288  
   289  ```
   290  
   291  <details>
   292    <summary>πŸ“š Show more code examples</summary>
   293  
   294  ### Views engines
   295  
   296  πŸ“– [Config](https://docs.gofiber.io/api/fiber#config)
   297  πŸ“– [Engines](https://github.com/gofiber/template)
   298  πŸ“– [Render](https://docs.gofiber.io/api/ctx#render)
   299  
   300  Fiber defaults to the [html/template](https://pkg.go.dev/html/template/) when no view engine is set.
   301  
   302  If you want to execute partials or use a different engine like [amber](https://github.com/eknkc/amber), [handlebars](https://github.com/aymerick/raymond), [mustache](https://github.com/cbroglie/mustache) or [pug](https://github.com/Joker/jade) etc..
   303  
   304  Checkout our [Template](https://github.com/gofiber/template) package that support multiple view engines.
   305  
   306  ```go
   307  package main
   308  
   309  import (
   310      "github.com/gofiber/fiber/v2"
   311      "github.com/gofiber/template/pug"
   312  )
   313  
   314  func main() {
   315      // You can setup Views engine before initiation app:
   316      app := fiber.New(fiber.Config{
   317          Views: pug.New("./views", ".pug"),
   318      })
   319  
   320      // And now, you can call template `./views/home.pug` like this:
   321      app.Get("/", func(c *fiber.Ctx) error {
   322          return c.Render("home", fiber.Map{
   323              "title": "Homepage",
   324              "year":  1999,
   325          })
   326      })
   327  
   328      log.Fatal(app.Listen(":3000"))
   329  }
   330  ```
   331  
   332  ### Grouping routes into chains
   333  
   334  πŸ“– [Group](https://docs.gofiber.io/api/app#group)
   335  
   336  ```go
   337  func middleware(c *fiber.Ctx) error {
   338      fmt.Println("Don't mind me!")
   339      return c.Next()
   340  }
   341  
   342  func handler(c *fiber.Ctx) error {
   343      return c.SendString(c.Path())
   344  }
   345  
   346  func main() {
   347      app := fiber.New()
   348  
   349      // Root API route
   350      api := app.Group("/api", middleware) // /api
   351  
   352      // API v1 routes
   353      v1 := api.Group("/v1", middleware) // /api/v1
   354      v1.Get("/list", handler)           // /api/v1/list
   355      v1.Get("/user", handler)           // /api/v1/user
   356  
   357      // API v2 routes
   358      v2 := api.Group("/v2", middleware) // /api/v2
   359      v2.Get("/list", handler)           // /api/v2/list
   360      v2.Get("/user", handler)           // /api/v2/user
   361  
   362      // ...
   363  }
   364  
   365  ```
   366  
   367  ### Middleware logger
   368  
   369  πŸ“– [Logger](https://docs.gofiber.io/api/middleware/logger)
   370  
   371  ```go
   372  package main
   373  
   374  import (
   375      "log"
   376  
   377      "github.com/gofiber/fiber/v2"
   378      "github.com/gofiber/fiber/v2/middleware/logger"
   379  )
   380  
   381  func main() {
   382      app := fiber.New()
   383  
   384      app.Use(logger.New())
   385  
   386      // ...
   387  
   388      log.Fatal(app.Listen(":3000"))
   389  }
   390  ```
   391  
   392  ### Cross-Origin Resource Sharing (CORS)
   393  
   394  πŸ“– [CORS](https://docs.gofiber.io/api/middleware/cors)
   395  
   396  ```go
   397  import (
   398      "log"
   399  
   400      "github.com/gofiber/fiber/v2"
   401      "github.com/gofiber/fiber/v2/middleware/cors"
   402  )
   403  
   404  func main() {
   405      app := fiber.New()
   406  
   407      app.Use(cors.New())
   408  
   409      // ...
   410  
   411      log.Fatal(app.Listen(":3000"))
   412  }
   413  ```
   414  
   415  Check CORS by passing any domain in `Origin` header:
   416  
   417  ```bash
   418  curl -H "Origin: http://example.com" --verbose http://localhost:3000
   419  ```
   420  
   421  ### Custom 404 response
   422  
   423  πŸ“– [HTTP Methods](https://docs.gofiber.io/api/ctx#status)
   424  
   425  ```go
   426  func main() {
   427      app := fiber.New()
   428  
   429      app.Static("/", "./public")
   430  
   431      app.Get("/demo", func(c *fiber.Ctx) error {
   432          return c.SendString("This is a demo!")
   433      })
   434  
   435      app.Post("/register", func(c *fiber.Ctx) error {
   436          return c.SendString("Welcome!")
   437      })
   438  
   439      // Last middleware to match anything
   440      app.Use(func(c *fiber.Ctx) error {
   441          return c.SendStatus(404)
   442          // => 404 "Not Found"
   443      })
   444  
   445      log.Fatal(app.Listen(":3000"))
   446  }
   447  ```
   448  
   449  ### JSON Response
   450  
   451  πŸ“– [JSON](https://docs.gofiber.io/api/ctx#json)
   452  
   453  ```go
   454  type User struct {
   455      Name string `json:"name"`
   456      Age  int    `json:"age"`
   457  }
   458  
   459  func main() {
   460      app := fiber.New()
   461  
   462      app.Get("/user", func(c *fiber.Ctx) error {
   463          return c.JSON(&User{"John", 20})
   464          // => {"name":"John", "age":20}
   465      })
   466  
   467      app.Get("/json", func(c *fiber.Ctx) error {
   468          return c.JSON(fiber.Map{
   469              "success": true,
   470              "message": "Hi John!",
   471          })
   472          // => {"success":true, "message":"Hi John!"}
   473      })
   474  
   475      log.Fatal(app.Listen(":3000"))
   476  }
   477  ```
   478  
   479  ### WebSocket Upgrade
   480  
   481  πŸ“– [Websocket](https://github.com/gofiber/websocket)
   482  
   483  ```go
   484  import (
   485      "github.com/gofiber/fiber/v2"
   486      "github.com/gofiber/fiber/v2/middleware/websocket"
   487  )
   488  
   489  func main() {
   490    app := fiber.New()
   491  
   492    app.Get("/ws", websocket.New(func(c *websocket.Conn) {
   493      for {
   494        mt, msg, err := c.ReadMessage()
   495        if err != nil {
   496          log.Println("read:", err)
   497          break
   498        }
   499        log.Printf("recv: %s", msg)
   500        err = c.WriteMessage(mt, msg)
   501        if err != nil {
   502          log.Println("write:", err)
   503          break
   504        }
   505      }
   506    }))
   507  
   508    log.Fatal(app.Listen(":3000"))
   509    // ws://localhost:3000/ws
   510  }
   511  ```
   512  
   513  ### Server-Sent Events
   514  
   515  πŸ“– [More Info](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events)
   516  
   517  ```go
   518  import (
   519      "github.com/gofiber/fiber/v2"
   520      "github.com/valyala/fasthttp"
   521  )
   522  
   523  func main() {
   524    app := fiber.New()
   525  
   526    app.Get("/sse", func(c *fiber.Ctx) error {
   527      c.Set("Content-Type", "text/event-stream")
   528      c.Set("Cache-Control", "no-cache")
   529      c.Set("Connection", "keep-alive")
   530      c.Set("Transfer-Encoding", "chunked")
   531  
   532      c.Context().SetBodyStreamWriter(fasthttp.StreamWriter(func(w *bufio.Writer) {
   533        fmt.Println("WRITER")
   534        var i int
   535  
   536        for {
   537          i++
   538          msg := fmt.Sprintf("%d - the time is %v", i, time.Now())
   539          fmt.Fprintf(w, "data: Message: %s\n\n", msg)
   540          fmt.Println(msg)
   541  
   542          w.Flush()
   543          time.Sleep(5 * time.Second)
   544        }
   545      }))
   546  
   547      return nil
   548    })
   549  
   550    log.Fatal(app.Listen(":3000"))
   551  }
   552  ```
   553  
   554  ### Recover middleware
   555  
   556  πŸ“– [Recover](https://docs.gofiber.io/api/middleware/recover)
   557  
   558  ```go
   559  import (
   560      "github.com/gofiber/fiber/v2"
   561      "github.com/gofiber/fiber/v2/middleware/recover"
   562  )
   563  
   564  func main() {
   565      app := fiber.New()
   566  
   567      app.Use(recover.New())
   568  
   569      app.Get("/", func(c *fiber.Ctx) error {
   570          panic("normally this would crash your app")
   571      })
   572  
   573      log.Fatal(app.Listen(":3000"))
   574  }
   575  ```
   576  
   577  </details>
   578  
   579  ### Using Trusted Proxy
   580  
   581  πŸ“– [Config](https://docs.gofiber.io/api/fiber#config)
   582  
   583  ```go
   584  import (
   585      "github.com/gofiber/fiber/v2"
   586      "github.com/gofiber/fiber/v2/middleware/recover"
   587  )
   588  
   589  func main() {
   590      app := fiber.New(fiber.Config{
   591          EnableTrustedProxyCheck: true,
   592          TrustedProxies: []string{"0.0.0.0", "1.1.1.1/30"}, // IP address or IP address range
   593          ProxyHeader: fiber.HeaderXForwardedFor,
   594      })
   595  
   596      // ...
   597  
   598      log.Fatal(app.Listen(":3000"))
   599  }
   600  ```
   601  
   602  </details>
   603  
   604  ## 🧬 Internal Middleware
   605  
   606  Here is a list of middleware that are included within the Fiber framework.
   607  
   608  | Middleware                                                                             | Description                                                                                                                                                                  |
   609  |:---------------------------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
   610  | [basicauth](https://github.com/gofiber/fiber/tree/master/middleware/basicauth)         | Basic auth middleware provides an HTTP basic authentication. It calls the next handler for valid credentials and 401 Unauthorized for missing or invalid credentials.        |
   611  | [cache](https://github.com/gofiber/fiber/tree/master/middleware/cache)                 | Intercept and cache responses                                                                                                                                                |
   612  | [compress](https://github.com/gofiber/fiber/tree/master/middleware/compress)           | Compression middleware for Fiber, it supports `deflate`, `gzip` and `brotli` by default.                                                                                     |
   613  | [cors](https://github.com/gofiber/fiber/tree/master/middleware/cors)                   | Enable cross-origin resource sharing \(CORS\) with various options.                                                                                                          |
   614  | [csrf](https://github.com/gofiber/fiber/tree/master/middleware/csrf)                   | Protect from CSRF exploits.                                                                                                                                                  |
   615  | [encryptcookie](https://github.com/gofiber/fiber/tree/master/middleware/encryptcookie) | Encrypt middleware which encrypts cookie values.                                                                                                                             |
   616  | [envvar](https://github.com/gofiber/fiber/tree/master/middleware/envvar)               | Expose environment variables with providing an optional config.                                                                                                              |
   617  | [etag](https://github.com/gofiber/fiber/tree/master/middleware/etag)                   | ETag middleware that lets caches be more efficient and save bandwidth, as a web server does not need to resend a full response if the content has not changed.               |
   618  | [expvar](https://github.com/gofiber/fiber/tree/master/middleware/expvar)               | Expvar middleware that serves via its HTTP server runtime exposed variants in the JSON format.                                                                               |
   619  | [favicon](https://github.com/gofiber/fiber/tree/master/middleware/favicon)             | Ignore favicon from logs or serve from memory if a file path is provided.                                                                                                    |
   620  | [filesystem](https://github.com/gofiber/fiber/tree/master/middleware/filesystem)       | FileSystem middleware for Fiber, special thanks and credits to Alireza Salary                                                                                                |
   621  | [limiter](https://github.com/gofiber/fiber/tree/master/middleware/limiter)             | Rate-limiting middleware for Fiber. Use to limit repeated requests to public APIs and/or endpoints such as password reset.                                                   |
   622  | [logger](https://github.com/gofiber/fiber/tree/master/middleware/logger)               | HTTP request/response logger.                                                                                                                                                |
   623  | [monitor](https://github.com/gofiber/fiber/tree/master/middleware/monitor)             | Monitor middleware that reports server metrics, inspired by express-status-monitor                                                                                           |
   624  | [pprof](https://github.com/gofiber/fiber/tree/master/middleware/pprof)                 | Special thanks to Matthew Lee \(@mthli\)                                                                                                                                     |
   625  | [proxy](https://github.com/gofiber/fiber/tree/master/middleware/proxy)                 | Allows you to proxy requests to a multiple servers                                                                                                                           |
   626  | [recover](https://github.com/gofiber/fiber/tree/master/middleware/recover)             | Recover middleware recovers from panics anywhere in the stack chain and handles the control to the centralized[ ErrorHandler](https://docs.gofiber.io/guide/error-handling). |
   627  | [requestid](https://github.com/gofiber/fiber/tree/master/middleware/requestid)         | Adds a requestid to every request.                                                                                                                                           |
   628  | [session](https://github.com/gofiber/fiber/tree/master/middleware/session)             | Session middleware. NOTE: This middleware uses our Storage package.                                                                                                          |
   629  | [skip](https://github.com/gofiber/fiber/tree/master/middleware/skip)                   | Skip middleware that skips a wrapped handler if a predicate is true.                                                                                                         |
   630  | [rewrite](https://github.com/gofiber/rewrite)     | Rewrite middleware rewrites the URL path based on provided rules. It can be helpful for backward compatibility or just creating cleaner and more descriptive links. |
   631  | [timeout](https://github.com/gofiber/fiber/tree/master/middleware/timeout)             | Adds a max time for a request and forwards to ErrorHandler if it is exceeded.                                                                                                |
   632  | [adaptor](https://github.com/gofiber/adaptor)     | Converter for net/http handlers to/from Fiber request handlers, special thanks to @arsmn!                                                                           |
   633  | [helmet](https://github.com/gofiber/helmet)       | Helps secure your apps by setting various HTTP headers.                                                                                                             |
   634  | [redirect](https://github.com/gofiber/redirect)   | Redirect middleware                                                                                                                                                 |
   635  | [keyauth](https://github.com/gofiber/keyauth)     | Key auth middleware provides a key based authentication.                                                                                                            |
   636  
   637  ## 🧬 External Middleware
   638  
   639  List of externally hosted middleware modules and maintained by the [Fiber team](https://github.com/orgs/gofiber/people).
   640  
   641  | Middleware                                        | Description                                                                                                                                                         |
   642  | :------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
   643  | [jwt](https://github.com/gofiber/jwt)             | JWT returns a JSON Web Token \(JWT\) auth middleware.                                                                                                               |
   644  | [storage](https://github.com/gofiber/storage)     | Premade storage drivers that implement the Storage interface, designed to be used with various Fiber middlewares.                                                   |
   645  | [template](https://github.com/gofiber/template)   | This package contains 8 template engines that can be used with Fiber `v1.10.x` Go version 1.13 or higher is required.                                               |
   646  | [websocket](https://github.com/gofiber/websocket) | Based on Fasthttp WebSocket for Fiber with Locals support!                                                                                                          |
   647  
   648  ## πŸ•ΆοΈ Awesome List
   649  
   650  For more articles, middlewares, examples or tools check our [awesome list](https://github.com/gofiber/awesome-fiber).
   651  
   652  ## πŸ‘ Contribute
   653  
   654  If you want to say **thank you** and/or support the active development of `Fiber`:
   655  
   656  1. Add a [GitHub Star](https://github.com/gofiber/fiber/stargazers) to the project.
   657  2. Tweet about the project [on your Twitter](https://twitter.com/intent/tweet?text=Fiber%20is%20an%20Express%20inspired%20%23web%20%23framework%20built%20on%20top%20of%20Fasthttp%2C%20the%20fastest%20HTTP%20engine%20for%20%23Go.%20Designed%20to%20ease%20things%20up%20for%20%23fast%20development%20with%20zero%20memory%20allocation%20and%20%23performance%20in%20mind%20%F0%9F%9A%80%20https%3A%2F%2Fgithub.com%2Fgofiber%2Ffiber).
   658  3. Write a review or tutorial on [Medium](https://medium.com/), [Dev.to](https://dev.to/) or personal blog.
   659  4. Support the project by donating a [cup of coffee](https://buymeacoff.ee/fenny).
   660  
   661  ## β˜• Supporters
   662  
   663  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**](https://buymeacoff.ee/fenny).
   664  
   665  |                                                            | User                                             | Donation |
   666  | :--------------------------------------------------------- | :----------------------------------------------- | :------- |
   667  | ![](https://avatars.githubusercontent.com/u/204341?s=25)   | [@destari](https://github.com/destari)           | β˜• x 10  |
   668  | ![](https://avatars.githubusercontent.com/u/63164982?s=25) | [@dembygenesis](https://github.com/dembygenesis) | β˜• x 5   |
   669  | ![](https://avatars.githubusercontent.com/u/56607882?s=25) | [@thomasvvugt](https://github.com/thomasvvugt)   | β˜• x 5   |
   670  | ![](https://avatars.githubusercontent.com/u/27820675?s=25) | [@hendratommy](https://github.com/hendratommy)   | β˜• x 5   |
   671  | ![](https://avatars.githubusercontent.com/u/1094221?s=25)  | [@ekaputra07](https://github.com/ekaputra07)     | β˜• x 5   |
   672  | ![](https://avatars.githubusercontent.com/u/194590?s=25)   | [@jorgefuertes](https://github.com/jorgefuertes) | β˜• x 5   |
   673  | ![](https://avatars.githubusercontent.com/u/186637?s=25)   | [@candidosales](https://github.com/candidosales) | β˜• x 5   |
   674  | ![](https://avatars.githubusercontent.com/u/29659953?s=25) | [@l0nax](https://github.com/l0nax)               | β˜• x 3   |
   675  | ![](https://avatars.githubusercontent.com/u/635852?s=25)   | [@bihe](https://github.com/bihe)                 | β˜• x 3   |
   676  | ![](https://avatars.githubusercontent.com/u/307334?s=25)   | [@justdave](https://github.com/justdave)         | β˜• x 3   |
   677  | ![](https://avatars.githubusercontent.com/u/11155743?s=25) | [@koddr](https://github.com/koddr)               | β˜• x 1   |
   678  | ![](https://avatars.githubusercontent.com/u/29042462?s=25) | [@lapolinar](https://github.com/lapolinar)       | β˜• x 1   |
   679  | ![](https://avatars.githubusercontent.com/u/2978730?s=25)  | [@diegowifi](https://github.com/diegowifi)       | β˜• x 1   |
   680  | ![](https://avatars.githubusercontent.com/u/44171355?s=25) | [@ssimk0](https://github.com/ssimk0)             | β˜• x 1   |
   681  | ![](https://avatars.githubusercontent.com/u/5638101?s=25)  | [@raymayemir](https://github.com/raymayemir)     | β˜• x 1   |
   682  | ![](https://avatars.githubusercontent.com/u/619996?s=25)   | [@melkorm](https://github.com/melkorm)           | β˜• x 1   |
   683  | ![](https://avatars.githubusercontent.com/u/31022056?s=25) | [@marvinjwendt](https://github.com/marvinjwendt) | β˜• x 1   |
   684  | ![](https://avatars.githubusercontent.com/u/31921460?s=25) | [@toishy](https://github.com/toishy)             | β˜• x 1   |
   685  
   686  ## β€Žβ€πŸ’» Code Contributors
   687  
   688  <img src="https://opencollective.com/fiber/contributors.svg?width=890&button=false" alt="Code Contributors" style="max-width:100%;">
   689  
   690  ## ⭐️ Stargazers
   691  
   692  <img src="https://starchart.cc/gofiber/fiber.svg" alt="Stargazers over time" style="max-width: 100%">
   693  
   694  ## ⚠️ License
   695  
   696  Copyright (c) 2019-present [Fenny](https://github.com/fenny) and [Contributors](https://github.com/gofiber/fiber/graphs/contributors). `Fiber` is free and open-source software licensed under the [MIT License](https://github.com/gofiber/fiber/blob/master/LICENSE). Official logo was created by [Vic ShΓ³stak](https://github.com/koddr) and distributed under [Creative Commons](https://creativecommons.org/licenses/by-sa/4.0/) license (CC BY-SA 4.0 International).
   697  
   698  **Third-party library licenses**
   699  
   700  -   [colorable](https://github.com/mattn/go-colorable/blob/master/LICENSE)
   701  -   [isatty](https://github.com/mattn/go-isatty/blob/master/LICENSE)
   702  -   [runewidth](https://github.com/mattn/go-runewidth/blob/master/LICENSE)
   703  -   [fasthttp](https://github.com/valyala/fasthttp/blob/master/LICENSE)
   704  -   [bytebufferpool](https://github.com/valyala/bytebufferpool/blob/master/LICENSE)
   705  -   [dictpool](https://github.com/savsgio/dictpool/blob/master/LICENSE)
   706  -   [fwd](https://github.com/philhofer/fwd/blob/master/LICENSE.md)
   707  -   [go-ole](https://github.com/go-ole/go-ole/blob/master/LICENSE)
   708  -   [gopsutil](https://github.com/shirou/gopsutil/blob/master/LICENSE)
   709  -   [msgp](https://github.com/tinylib/msgp/blob/master/LICENSE)
   710  -   [schema](https://github.com/gorilla/schema/blob/master/LICENSE)
   711  -   [uuid](https://github.com/google/uuid/blob/master/LICENSE)
   712  -   [wmi](https://github.com/StackExchange/wmi/blob/master/LICENSE)