github.com/boomhut/fiber/v2@v2.0.0-20230603160335-b65c856e57d3/.github/README_fr.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_uk.md">
    64      <img height="20px" src="https://img.shields.io/badge/UK-flag.svg?color=555555&style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDU1LjIgMzguNCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTUuMiAzOC40IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWwoJLnN0MHtmaWxsOiNGRkQ1MDA7fQoJLnN0MXtmaWxsOiMwMDVCQkI7fQpdXT48L3N0eWxlPjxnPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0zLjAzLDBoNDkuMTNjMS42NywwLDMuMDMsMS4zNiwzLjAzLDMuMDN2MzIuMzNjMCwxLjY3LTEuMzcsMy4wMy0zLjAzLDMuMDNIMy4wM0MxLjM3LDM4LjQsMCwzNy4wNCwwLDM1LjM3IFYzLjAzQzAsMS4zNiwxLjM3LDAsMy4wMywwTDMuMDMsMHoiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNMCwxOS4yaDU1LjJ2MTYuMTdjMCwxLjY3LTEuMzcsMy4wMy0zLjAzLDMuMDNIMy4wM0MxLjM3LDM4LjQsMCwzNy4wNCwwLDM1LjM3VjE5LjJMMCwxOS4yeiIvPjwvZz48L3N2Zz4=">
    65    </a>
    66    <a href="https://github.com/gofiber/fiber/blob/master/.github/README_az.md">
    67      <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+">
    68    </a>
    69    <br>
    70    <a href="https://pkg.go.dev/github.com/gofiber/fiber/v2#pkg-overview">
    71      <img src="https://img.shields.io/badge/%F0%9F%93%9A%20godoc-pkg-00ACD7.svg?color=00ACD7&style=flat-square">
    72    </a>
    73    <a href="https://goreportcard.com/report/github.com/gofiber/fiber/v2">
    74      <img src="https://img.shields.io/badge/%F0%9F%93%9D%20goreport-A%2B-75C46B?style=flat-square">
    75    </a>
    76    <a href="https://gocover.io/github.com/gofiber/fiber">
    77      <img src="https://img.shields.io/badge/%F0%9F%94%8E%20gocover-97.8%25-75C46B.svg?style=flat-square">
    78    </a>
    79    <a href="https://github.com/gofiber/fiber/actions?query=workflow%3ASecurity">
    80      <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">
    81    </a>
    82    <a href="https://github.com/gofiber/fiber/actions?query=workflow%3ATest">
    83      <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">
    84    </a>
    85      <a href="https://docs.gofiber.io">
    86      <img src="https://img.shields.io/badge/%F0%9F%92%A1%20fiber-docs-00ACD7.svg?style=flat-square">
    87    </a>
    88    <a href="https://gofiber.io/discord">
    89      <img src="https://img.shields.io/discord/704680098577514527?style=flat-square&label=%F0%9F%92%AC%20discord&color=00ACD7">
    90    </a>
    91  </p>
    92  <p align="center">
    93    <b>Fiber</b> est un framework web  inspiré d' <a href="https://github.com/expressjs/express">Express</a>. Il se base sur <a href="https://github.com/valyala/fasthttp">Fasthttp</a>, l'implémentation HTTP de <a href="https://go.dev/doc/">Go</a> <b>la plus rapide</b>. Conçu pour <b>faciliter</b> les choses pour des développements <b>rapides</b>, Fiber garde à l'esprit <b>l'absence d'allocations mémoires</b>, ainsi que les <b>performances</b>.
    94  </p>
    95  
    96  ## ⚡️ Quickstart
    97  
    98  ```go
    99  package main
   100  
   101  import "github.com/boomhut/fiber/v2"
   102  
   103  func main() {
   104      app := fiber.New()
   105  
   106      app.Get("/", func(c *fiber.Ctx) error {
   107          return c.SendString("Hello, World 👋!")
   108      })
   109  
   110      app.Listen(":3000")
   111  }
   112  ```
   113  
   114  ## 🤖 Benchmarks
   115  
   116  Ces tests sont effectués par [TechEmpower](https://www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=plaintext) et [Go Web](https://github.com/smallnest/go-web-framework-benchmark). Si vous voulez voir tous les résultats, n'hésitez pas à consulter notre [Wiki](https://docs.gofiber.io/extra/benchmarks).
   117  
   118  <p float="left" align="middle">
   119    <img src="https://raw.githubusercontent.com/gofiber/docs/master/static/img/benchmark-pipeline.png" width="49%">
   120    <img src="https://raw.githubusercontent.com/gofiber/docs/master/static/img/benchmark_alloc.png" width="49%">
   121  </p>
   122  
   123  ## ⚙️ Installation
   124  
   125  Make sure you have Go installed ([download](https://go.dev/dl/)). Version `1.17` or higher is required.
   126  
   127  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:
   128  
   129  ```bash
   130  go get -u github.com/gofiber/fiber/v2
   131  ```
   132  
   133  ## 🎯 Features
   134  
   135  -   [Routing](https://docs.gofiber.io/guide/routing) robuste
   136  -   Serve [static files](https://docs.gofiber.io/api/app#static)
   137  -   [Performances](https://docs.gofiber.io/extra/benchmarks) extrêmes
   138  -   [Faible empreinte mémoire](https://docs.gofiber.io/extra/benchmarks)
   139  -   [API endpoints](https://docs.gofiber.io/api/ctx)
   140  -   Middleware & [Next](https://docs.gofiber.io/api/ctx#next) support
   141  -   Programmation côté serveur [rapide](https://dev.to/koddr/welcome-to-fiber-an-express-js-styled-fastest-web-framework-written-with-on-golang-497)
   142  -   [Template engines](https://github.com/gofiber/template)
   143  -   [WebSocket support](https://github.com/gofiber/websocket)
   144  -   [Server-Sent events](https://github.com/gofiber/recipes/tree/master/sse)
   145  -   [Rate Limiter](https://docs.gofiber.io/api/middleware/limiter)
   146  -   Available in [18 languages](https://docs.gofiber.io/)
   147  -   Et plus encore, [explorez Fiber](https://docs.gofiber.io/)
   148  
   149  ## 💡 Philosophie
   150  
   151  Les nouveaux gophers qui passent de [Node.js](https://nodejs.org/en/about/) à [Go](https://go.dev/doc/) sont confrontés à une courbe d'apprentissage, avant de pouvoir construire leurs applications web et microservices. Fiber, en tant que **framework web**, a été mis au point avec en tête l'idée de **minimalisme**, tout en suivant l'**UNIX way**, afin que les nouveaux gophers puissent rapidement entrer dans le monde de Go, avec un accueil chaleureux, de confiance.
   152  
   153  Fiber est **inspiré** par Express, le framework web le plus populaire d'Internet. Nous avons combiné la **facilité** d'Express, et la **performance brute** de Go. Si vous avez déja développé une application web en Node.js (_en utilisant Express ou équivalent_), alors de nombreuses méthodes et principes vous sembleront **familiers**.
   154  
   155  ## ⚠️ Limitations
   156  * 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.
   157  * 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.
   158  
   159  ## 👀 Exemples
   160  
   161  Ci-dessous quelques exemples courants. Si vous voulez voir plus d'exemples, rendez-vous sur notre ["Recipes repository"](https://github.com/gofiber/recipes) ou visitez notre [documentation API](https://docs.gofiber.io).
   162  
   163  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).
   164  
   165  #### 📖 [**Basic Routing**](https://docs.gofiber.io/#basic-routing)
   166  
   167  ```go
   168  func main() {
   169      app := fiber.New()
   170  
   171      // GET /api/register
   172      app.Get("/api/*", func(c *fiber.Ctx) error {
   173          msg := fmt.Sprintf("✋ %s", c.Params("*"))
   174          return c.SendString(msg) // => ✋ register
   175      })
   176  
   177      // GET /flights/LAX-SFO
   178      app.Get("/flights/:from-:to", func(c *fiber.Ctx) error {
   179          msg := fmt.Sprintf("💸 From: %s, To: %s", c.Params("from"), c.Params("to"))
   180          return c.SendString(msg) // => 💸 From: LAX, To: SFO
   181      })
   182  
   183      // GET /dictionary.txt
   184      app.Get("/:file.:ext", func(c *fiber.Ctx) error {
   185          msg := fmt.Sprintf("📃 %s.%s", c.Params("file"), c.Params("ext"))
   186          return c.SendString(msg) // => 📃 dictionary.txt
   187      })
   188  
   189      // GET /john/75
   190      app.Get("/:name/:age/:gender?", func(c *fiber.Ctx) error {
   191          msg := fmt.Sprintf("👴 %s is %s years old", c.Params("name"), c.Params("age"))
   192          return c.SendString(msg) // => 👴 john is 75 years old
   193      })
   194  
   195      // GET /john
   196      app.Get("/:name", func(c *fiber.Ctx) error {
   197          msg := fmt.Sprintf("Hello, %s 👋!", c.Params("name"))
   198          return c.SendString(msg) // => Hello john 👋!
   199      })
   200  
   201      log.Fatal(app.Listen(":3000"))
   202  }
   203  
   204  ```
   205  
   206  #### 📖 [**Route Naming**](https://docs.gofiber.io/api/app#name)
   207  
   208  ```go
   209  func main() {
   210      app := fiber.New()
   211  
   212      // GET /api/register
   213      app.Get("/api/*", func(c *fiber.Ctx) error {
   214          msg := fmt.Sprintf("✋ %s", c.Params("*"))
   215          return c.SendString(msg) // => ✋ register
   216      }).Name("api")
   217  
   218      data, _ := json.MarshalIndent(app.GetRoute("api"), "", "  ")
   219      fmt.Print(string(data))
   220      // Prints:
   221      // {
   222      //    "method": "GET",
   223      //    "name": "api",
   224      //    "path": "/api/*",
   225      //    "params": [
   226      //      "*1"
   227      //    ]
   228      // }
   229  
   230  
   231      log.Fatal(app.Listen(":3000"))
   232  }
   233  
   234  ```
   235  
   236  #### 📖 [**Serving Static Files**](https://docs.gofiber.io/api/app#static)
   237  
   238  ```go
   239  func main() {
   240      app := fiber.New()
   241  
   242      app.Static("/", "./public")
   243      // => http://localhost:3000/js/script.js
   244      // => http://localhost:3000/css/style.css
   245  
   246      app.Static("/prefix", "./public")
   247      // => http://localhost:3000/prefix/js/script.js
   248      // => http://localhost:3000/prefix/css/style.css
   249  
   250      app.Static("*", "./public/index.html")
   251      // => http://localhost:3000/any/path/shows/index/html
   252  
   253      log.Fatal(app.Listen(":3000"))
   254  }
   255  
   256  ```
   257  
   258  #### 📖 [**Middleware & Next**](https://docs.gofiber.io/api/ctx#next)
   259  
   260  ```go
   261  func main() {
   262  	app := fiber.New()
   263  
   264  	// Match any route
   265  	app.Use(func(c *fiber.Ctx) error {
   266  		fmt.Println("🥇 First handler")
   267  		return c.Next()
   268  	})
   269  
   270  	// Match all routes starting with /api
   271  	app.Use("/api", func(c *fiber.Ctx) error {
   272  		fmt.Println("🥈 Second handler")
   273  		return c.Next()
   274  	})
   275  
   276  	// GET /api/register
   277  	app.Get("/api/list", func(c *fiber.Ctx) error {
   278  		fmt.Println("🥉 Last handler")
   279  		return c.SendString("Hello, World 👋!")
   280  	})
   281  
   282  	log.Fatal(app.Listen(":3000"))
   283  }
   284  
   285  ```
   286  
   287  <details>
   288    <summary>📚 Show more code examples</summary>
   289  
   290  ### Views engines
   291  
   292  📖 [Config](https://docs.gofiber.io/api/fiber#config)
   293  📖 [Engines](https://github.com/gofiber/template)
   294  📖 [Render](https://docs.gofiber.io/api/ctx#render)
   295  
   296  Fiber defaults to the [html/template](https://pkg.go.dev/html/template/) when no view engine is set.
   297  
   298  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..
   299  
   300  Checkout our [Template](https://github.com/gofiber/template) package that support multiple view engines.
   301  
   302  ```go
   303  package main
   304  
   305  import (
   306      "github.com/boomhut/fiber/v2"
   307      "github.com/gofiber/template/pug"
   308  )
   309  
   310  func main() {
   311      // You can setup Views engine before initiation app:
   312      app := fiber.New(fiber.Config{
   313          Views: pug.New("./views", ".pug"),
   314      })
   315  
   316      // And now, you can call template `./views/home.pug` like this:
   317      app.Get("/", func(c *fiber.Ctx) error {
   318          return c.Render("home", fiber.Map{
   319              "title": "Homepage",
   320              "year":  1999,
   321          })
   322      })
   323  
   324      log.Fatal(app.Listen(":3000"))
   325  }
   326  ```
   327  
   328  ### Grouping routes into chains
   329  
   330  📖 [Group](https://docs.gofiber.io/api/app#group)
   331  
   332  ```go
   333  func middleware(c *fiber.Ctx) error {
   334      fmt.Println("Don't mind me!")
   335      return c.Next()
   336  }
   337  
   338  func handler(c *fiber.Ctx) error {
   339      return c.SendString(c.Path())
   340  }
   341  
   342  func main() {
   343      app := fiber.New()
   344  
   345      // Root API route
   346      api := app.Group("/api", middleware) // /api
   347  
   348      // API v1 routes
   349      v1 := api.Group("/v1", middleware) // /api/v1
   350      v1.Get("/list", handler)           // /api/v1/list
   351      v1.Get("/user", handler)           // /api/v1/user
   352  
   353      // API v2 routes
   354      v2 := api.Group("/v2", middleware) // /api/v2
   355      v2.Get("/list", handler)           // /api/v2/list
   356      v2.Get("/user", handler)           // /api/v2/user
   357  
   358      // ...
   359  }
   360  
   361  ```
   362  
   363  ### Middleware logger
   364  
   365  📖 [Logger](https://docs.gofiber.io/api/middleware/logger)
   366  
   367  ```go
   368  package main
   369  
   370  import (
   371      "log"
   372  
   373      "github.com/boomhut/fiber/v2"
   374      "github.com/gofiber/fiber/v2/middleware/logger"
   375  )
   376  
   377  func main() {
   378      app := fiber.New()
   379  
   380      app.Use(logger.New())
   381  
   382      // ...
   383  
   384      log.Fatal(app.Listen(":3000"))
   385  }
   386  ```
   387  
   388  ### Cross-Origin Resource Sharing (CORS)
   389  
   390  📖 [CORS](https://docs.gofiber.io/api/middleware/cors)
   391  
   392  ```go
   393  import (
   394      "log"
   395  
   396      "github.com/boomhut/fiber/v2"
   397      "github.com/gofiber/fiber/v2/middleware/cors"
   398  )
   399  
   400  func main() {
   401      app := fiber.New()
   402  
   403      app.Use(cors.New())
   404  
   405      // ...
   406  
   407      log.Fatal(app.Listen(":3000"))
   408  }
   409  ```
   410  
   411  Check CORS by passing any domain in `Origin` header:
   412  
   413  ```bash
   414  curl -H "Origin: http://example.com" --verbose http://localhost:3000
   415  ```
   416  
   417  ### Custom 404 response
   418  
   419  📖 [HTTP Methods](https://docs.gofiber.io/api/ctx#status)
   420  
   421  ```go
   422  func main() {
   423      app := fiber.New()
   424  
   425      app.Static("/", "./public")
   426  
   427      app.Get("/demo", func(c *fiber.Ctx) error {
   428          return c.SendString("This is a demo!")
   429      })
   430  
   431      app.Post("/register", func(c *fiber.Ctx) error {
   432          return c.SendString("Welcome!")
   433      })
   434  
   435      // Last middleware to match anything
   436      app.Use(func(c *fiber.Ctx) error {
   437          return c.SendStatus(404)
   438          // => 404 "Not Found"
   439      })
   440  
   441      log.Fatal(app.Listen(":3000"))
   442  }
   443  ```
   444  
   445  ### JSON Response
   446  
   447  📖 [JSON](https://docs.gofiber.io/api/ctx#json)
   448  
   449  ```go
   450  type User struct {
   451      Name string `json:"name"`
   452      Age  int    `json:"age"`
   453  }
   454  
   455  func main() {
   456      app := fiber.New()
   457  
   458      app.Get("/user", func(c *fiber.Ctx) error {
   459          return c.JSON(&User{"John", 20})
   460          // => {"name":"John", "age":20}
   461      })
   462  
   463      app.Get("/json", func(c *fiber.Ctx) error {
   464          return c.JSON(fiber.Map{
   465              "success": true,
   466              "message": "Hi John!",
   467          })
   468          // => {"success":true, "message":"Hi John!"}
   469      })
   470  
   471      log.Fatal(app.Listen(":3000"))
   472  }
   473  ```
   474  
   475  ### WebSocket Upgrade
   476  
   477  📖 [Websocket](https://github.com/gofiber/websocket)
   478  
   479  ```go
   480  import (
   481      "github.com/boomhut/fiber/v2"
   482      "github.com/gofiber/fiber/v2/middleware/websocket"
   483  )
   484  
   485  func main() {
   486    app := fiber.New()
   487  
   488    app.Get("/ws", websocket.New(func(c *websocket.Conn) {
   489      for {
   490        mt, msg, err := c.ReadMessage()
   491        if err != nil {
   492          log.Println("read:", err)
   493          break
   494        }
   495        log.Printf("recv: %s", msg)
   496        err = c.WriteMessage(mt, msg)
   497        if err != nil {
   498          log.Println("write:", err)
   499          break
   500        }
   501      }
   502    }))
   503  
   504    log.Fatal(app.Listen(":3000"))
   505    // ws://localhost:3000/ws
   506  }
   507  ```
   508  
   509  ### Server-Sent Events
   510  
   511  📖 [More Info](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events)
   512  
   513  ```go
   514  import (
   515      "github.com/boomhut/fiber/v2"
   516      "github.com/valyala/fasthttp"
   517  )
   518  
   519  func main() {
   520    app := fiber.New()
   521  
   522    app.Get("/sse", func(c *fiber.Ctx) error {
   523      c.Set("Content-Type", "text/event-stream")
   524      c.Set("Cache-Control", "no-cache")
   525      c.Set("Connection", "keep-alive")
   526      c.Set("Transfer-Encoding", "chunked")
   527  
   528      c.Context().SetBodyStreamWriter(fasthttp.StreamWriter(func(w *bufio.Writer) {
   529        fmt.Println("WRITER")
   530        var i int
   531  
   532        for {
   533          i++
   534          msg := fmt.Sprintf("%d - the time is %v", i, time.Now())
   535          fmt.Fprintf(w, "data: Message: %s\n\n", msg)
   536          fmt.Println(msg)
   537  
   538          w.Flush()
   539          time.Sleep(5 * time.Second)
   540        }
   541      }))
   542  
   543      return nil
   544    })
   545  
   546    log.Fatal(app.Listen(":3000"))
   547  }
   548  ```
   549  
   550  ### Recover middleware
   551  
   552  📖 [Recover](https://docs.gofiber.io/api/middleware/recover)
   553  
   554  ```go
   555  import (
   556      "github.com/boomhut/fiber/v2"
   557      "github.com/gofiber/fiber/v2/middleware/recover"
   558  )
   559  
   560  func main() {
   561      app := fiber.New()
   562  
   563      app.Use(recover.New())
   564  
   565      app.Get("/", func(c *fiber.Ctx) error {
   566          panic("normally this would crash your app")
   567      })
   568  
   569      log.Fatal(app.Listen(":3000"))
   570  }
   571  ```
   572  
   573  </details>
   574  
   575  ## 🧬 Internal Middleware
   576  
   577  Here is a list of middleware that are included within the Fiber framework.
   578  
   579  | Middleware                                                                             | Description                                                                                                                                                                  |
   580  | :------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
   581  | [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.        |
   582  | [cache](https://github.com/gofiber/fiber/tree/master/middleware/cache)                 | Intercept and cache responses                                                                                                                                                |
   583  | [compress](https://github.com/gofiber/fiber/tree/master/middleware/compress)           | Compression middleware for Fiber, it supports `deflate`, `gzip` and `brotli` by default.                                                                                     |
   584  | [cors](https://github.com/gofiber/fiber/tree/master/middleware/cors)                   | Enable cross-origin resource sharing \(CORS\) with various options.                                                                                                          |
   585  | [csrf](https://github.com/gofiber/fiber/tree/master/middleware/csrf)                   | Protect from CSRF exploits.                                                                                                                                                  |
   586  | [encryptcookie](https://github.com/gofiber/fiber/tree/master/middleware/encryptcookie) | Encrypt middleware which encrypts cookie values.                                                                                                                             |
   587  | [envvar](https://github.com/gofiber/fiber/tree/master/middleware/envvar)               | Expose environment variables with providing an optional config.                                                                                                              |
   588  | [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.               |
   589  | [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.                                                                               |
   590  | [favicon](https://github.com/gofiber/fiber/tree/master/middleware/favicon)             | Ignore favicon from logs or serve from memory if a file path is provided.                                                                                                    |
   591  | [filesystem](https://github.com/gofiber/fiber/tree/master/middleware/filesystem)       | FileSystem middleware for Fiber, special thanks and credits to Alireza Salary                                                                                                |
   592  | [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.                                                   |
   593  | [logger](https://github.com/gofiber/fiber/tree/master/middleware/logger)               | HTTP request/response logger.                                                                                                                                                |
   594  | [monitor](https://github.com/gofiber/fiber/tree/master/middleware/monitor)             | Monitor middleware that reports server metrics, inspired by express-status-monitor                                                                                           |
   595  | [pprof](https://github.com/gofiber/fiber/tree/master/middleware/pprof)                 | Special thanks to Matthew Lee \(@mthli\)                                                                                                                                     |
   596  | [proxy](https://github.com/gofiber/fiber/tree/master/middleware/proxy)                 | Allows you to proxy requests to a multiple servers                                                                                                                           |
   597  | [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). |
   598  | [requestid](https://github.com/gofiber/fiber/tree/master/middleware/requestid)         | Adds a requestid to every request.                                                                                                                                           |
   599  | [session](https://github.com/gofiber/fiber/tree/master/middleware/session)             | Session middleware. NOTE: This middleware uses our Storage package.                                                                                                          |
   600  | [skip](https://github.com/gofiber/fiber/tree/master/middleware/skip)                   | Skip middleware that skips a wrapped handler is a predicate is true.                                                                                                         |
   601  | [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.                                                                                                |
   602  | [keyauth](https://github.com/gofiber/keyauth)     | Key auth middleware provides a key based authentication.                                                                                                            |
   603  | [redirect](https://github.com/gofiber/redirect)   | Redirect middleware                                                                                                                                                 |
   604  | [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. |
   605  | [adaptor](https://github.com/gofiber/adaptor)     | Converter for net/http handlers to/from Fiber request handlers, special thanks to @arsmn!                                                                           |
   606  | [helmet](https://github.com/gofiber/helmet)       | Helps secure your apps by setting various HTTP headers.                                                                                                             |
   607  
   608  ## 🧬 External Middleware
   609  
   610  List of externally hosted middleware modules and maintained by the [Fiber team](https://github.com/orgs/gofiber/people).
   611  
   612  | Middleware                                        | Description                                                                                                                                                         |
   613  | :------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
   614  | [jwt](https://github.com/gofiber/jwt)             | JWT returns a JSON Web Token \(JWT\) auth middleware.                                                                                                               |
   615  | [storage](https://github.com/gofiber/storage)     | Premade storage drivers that implement the Storage interface, designed to be used with various Fiber middlewares.                                                   |
   616  | [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.                                               |
   617  | [websocket](https://github.com/gofiber/websocket) | Based on Fasthttp WebSocket for Fiber with Locals support!                                                                                                          |
   618  
   619  ## 🕶️ Awesome List
   620  
   621  For more articles, middlewares, examples or tools check our [awesome list](https://github.com/gofiber/awesome-fiber).
   622  
   623  ## 👍 Contribuer
   624  
   625  Si vous voulez nous remercier et/ou soutenir le développement actif de `Fiber`:
   626  
   627  1. Ajoutez une [GitHub Star](https://github.com/gofiber/fiber/stargazers) à ce projet.
   628  2. Twittez à propos de ce projet [sur votre 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).
   629  3. Ecrivez un article (review, tutorial) sur [Medium](https://medium.com/), [Dev.to](https://dev.to/), ou encore un blog personnel.
   630  4. Support the project by donating a [cup of coffee](https://buymeacoff.ee/fenny).
   631  
   632  ## ☕ Supporters
   633  
   634  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).
   635  
   636  |                                                            | User                                             | Donation |
   637  | :--------------------------------------------------------- | :----------------------------------------------- | :------- |
   638  | ![](https://avatars.githubusercontent.com/u/204341?s=25)   | [@destari](https://github.com/destari)           | ☕ x 10  |
   639  | ![](https://avatars.githubusercontent.com/u/63164982?s=25) | [@dembygenesis](https://github.com/dembygenesis) | ☕ x 5   |
   640  | ![](https://avatars.githubusercontent.com/u/56607882?s=25) | [@thomasvvugt](https://github.com/thomasvvugt)   | ☕ x 5   |
   641  | ![](https://avatars.githubusercontent.com/u/27820675?s=25) | [@hendratommy](https://github.com/hendratommy)   | ☕ x 5   |
   642  | ![](https://avatars.githubusercontent.com/u/1094221?s=25)  | [@ekaputra07](https://github.com/ekaputra07)     | ☕ x 5   |
   643  | ![](https://avatars.githubusercontent.com/u/194590?s=25)   | [@jorgefuertes](https://github.com/jorgefuertes) | ☕ x 5   |
   644  | ![](https://avatars.githubusercontent.com/u/186637?s=25)   | [@candidosales](https://github.com/candidosales) | ☕ x 5   |
   645  | ![](https://avatars.githubusercontent.com/u/29659953?s=25) | [@l0nax](https://github.com/l0nax)               | ☕ x 3   |
   646  | ![](https://avatars.githubusercontent.com/u/635852?s=25)   | [@bihe](https://github.com/bihe)                 | ☕ x 3   |
   647  | ![](https://avatars.githubusercontent.com/u/307334?s=25)   | [@justdave](https://github.com/justdave)         | ☕ x 3   |
   648  | ![](https://avatars.githubusercontent.com/u/11155743?s=25) | [@koddr](https://github.com/koddr)               | ☕ x 1   |
   649  | ![](https://avatars.githubusercontent.com/u/29042462?s=25) | [@lapolinar](https://github.com/lapolinar)       | ☕ x 1   |
   650  | ![](https://avatars.githubusercontent.com/u/2978730?s=25)  | [@diegowifi](https://github.com/diegowifi)       | ☕ x 1   |
   651  | ![](https://avatars.githubusercontent.com/u/44171355?s=25) | [@ssimk0](https://github.com/ssimk0)             | ☕ x 1   |
   652  | ![](https://avatars.githubusercontent.com/u/5638101?s=25)  | [@raymayemir](https://github.com/raymayemir)     | ☕ x 1   |
   653  | ![](https://avatars.githubusercontent.com/u/619996?s=25)   | [@melkorm](https://github.com/melkorm)           | ☕ x 1   |
   654  | ![](https://avatars.githubusercontent.com/u/31022056?s=25) | [@marvinjwendt](https://github.com/thomasvvugt)  | ☕ x 1   |
   655  | ![](https://avatars.githubusercontent.com/u/31921460?s=25) | [@toishy](https://github.com/toishy)             | ☕ x 1   |
   656  
   657  ## ‎‍💻 Code Contributors
   658  
   659  <img src="https://opencollective.com/fiber/contributors.svg?width=890&button=false" alt="Code Contributors" style="max-width:100%;">
   660  
   661  ## ⭐️ Stargazers
   662  
   663  <img src="https://starchart.cc/gofiber/fiber.svg" alt="Stargazers over time" style="max-width: 100%">
   664  
   665  ## ⚠️ License
   666  
   667  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).
   668  
   669  **Third-party library licenses**
   670  
   671  -   [colorable](https://github.com/mattn/go-colorable/blob/master/LICENSE)
   672  -   [isatty](https://github.com/mattn/go-isatty/blob/master/LICENSE)
   673  -   [runewidth](https://github.com/mattn/go-runewidth/blob/master/LICENSE)
   674  -   [fasthttp](https://github.com/valyala/fasthttp/blob/master/LICENSE)
   675  -   [bytebufferpool](https://github.com/valyala/bytebufferpool/blob/master/LICENSE)
   676  -   [dictpool](https://github.com/savsgio/dictpool/blob/master/LICENSE)
   677  -   [fwd](https://github.com/philhofer/fwd/blob/master/LICENSE.md)
   678  -   [go-ole](https://github.com/go-ole/go-ole/blob/master/LICENSE)
   679  -   [gopsutil](https://github.com/shirou/gopsutil/blob/master/LICENSE)
   680  -   [msgp](https://github.com/tinylib/msgp/blob/master/LICENSE)
   681  -   [schema](https://github.com/gorilla/schema/blob/master/LICENSE)
   682  -   [uuid](https://github.com/google/uuid/blob/master/LICENSE)
   683  -   [wmi](https://github.com/StackExchange/wmi/blob/master/LICENSE)