Skip to content

alexpts/go-mux-http

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

go-mux-http

codecov Go Report Card

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для запуска net/http Handler. (ΠŸΠΎΡ€Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ https://alexpts.github.io/go-next-docs/ совмСстимый с net/http вмСсто fastHttp)

ДокумСнтация

ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ ΠΎΡ‚ http.ServeMux

  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ priority: int).
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° RegExp Π² путях (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ мноТСство uri 1 ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ).
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π·Π°Ρ…Π²Π°Ρ‚Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΏΡƒΡ‚ΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°.
  • НалоТСниС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° Π»ΡŽΠ±ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈΠ· ΠΏΡƒΡ‚ΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π° Ρ‡Π΅Ρ€Π΅Π· regexp.
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΠΎ ΠΏΡƒΡ‚ΠΈ, HTTP ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ, regexp, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ ΠΈ Ρ‚.Π΄.
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ кастомный resolver для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ слоСв со своСй собствСнной Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΉ ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ²

Π›Π΅Π³Π΅Π½Π΄Π°:

h - http.Handler

m - http.ServeMux

app - go-mux-runner/mux/MicroApp


Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ middleware с Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ°ΠΌΠΈ). ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠ°Ρ нативная Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° ΠΈΠ· middleware http.Handler:

h(h) -> (h(h)) -> h(h)


http Mux сСрвСр, рСгистрируСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠΎ путям (1 ΠΏΡƒΡ‚ΡŒ - 1 ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ), Π½ΠΎ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π² ΠΏΡƒΠ½ΠΊΡ‚Π΅ 1:

mux(h) -> (h(h)) -> h(h)


go-mux-http позволяСт Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ с ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠΌΠΈΡΡ путями (Π»ΠΈΠ±ΠΎ ΡΠΎΠΏΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎ regexp Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ Π² 1 ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ), ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΈΠ· ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². МоТно ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² 1 ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΎΠ±Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΈ ΡΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ. МоТно Π³ΠΈΠ±ΠΊΠΎ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ· http.Handler ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π² mux_runner, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΠΈΠ· mux_runner Π² http.Handler (всС ΠΎΡ‡Π΅Π½ΡŒ Π³ΠΈΠ±ΠΊΠΎ).

app(h) -> app(h) -> app(h) - всС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ описаны Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ go-mux-runner, ΡƒΠ΄ΠΎΠ±Π½ΠΎ для Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ;

app(h) -> h(h) -> h(h) - ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ· ΠΏΡƒΠ½ΠΊΡ‚Π° 1 Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² (ΠΌΠ΅Π½Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎ);

h(h) -> h(h) -> h(app) -> app(h) - ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ· ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² mux_runner Π½Π° любом этапС;

app(h) -> app(h) -> h(h) -> h(h) - ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ· mux_runner Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² http.Handle Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ Π½Π° любом этапС (ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ);

FAQ

Q: Как Π² handler слоя ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ?

A: Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π½Π΅ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚Ρ‹ΠΉ http.Handler ΠΏΠΎ интСрфСйсу Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ отличаСтся ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ сам Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ (Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ).

A: ΠŸΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π² слой Π² Π²ΠΈΠ΄Π΅ мноТСства ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ ΠΏΡ€Π΅ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ управлСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ снова app.ServerHTTP(w, r) Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ дальшС ΠΏΠΎ слоям ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ.

A: МоТно Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ mux

Example

Examples

About

πŸš€ Micro applications mux for net/http

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages