Add http golang
This commit is contained in:
parent
d40d70ddce
commit
bf47895f40
2 changed files with 68 additions and 0 deletions
|
@ -5,6 +5,7 @@
|
||||||
- [Dev](./dev/main.md)
|
- [Dev](./dev/main.md)
|
||||||
|
|
||||||
- [Golang](./dev/golang/main.md)
|
- [Golang](./dev/golang/main.md)
|
||||||
|
- [http](./dev/golang/http.md)
|
||||||
- [Packages](./dev/golang/packages.md)
|
- [Packages](./dev/golang/packages.md)
|
||||||
- [Testing](./dev/golang/testing.md)
|
- [Testing](./dev/golang/testing.md)
|
||||||
- [Elixir](./dev/elixir/main.md)
|
- [Elixir](./dev/elixir/main.md)
|
||||||
|
|
67
src/dev/golang/http.md
Normal file
67
src/dev/golang/http.md
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
# http package stuff
|
||||||
|
|
||||||
|
## HTTP Status Code
|
||||||
|
|
||||||
|
Do not use number directly.
|
||||||
|
|
||||||
|
Don't do this
|
||||||
|
|
||||||
|
```golang
|
||||||
|
w.WriteHeader(404)
|
||||||
|
```
|
||||||
|
|
||||||
|
Do this
|
||||||
|
|
||||||
|
```golang
|
||||||
|
w.WriteHeader(http.StatusNotFound)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Error message
|
||||||
|
|
||||||
|
```golang
|
||||||
|
http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Flusher
|
||||||
|
|
||||||
|
A [Flusher](https://pkg.go.dev/net/http#Flusher) can be used to allow an HTTP handler to flush buffered data to the client.
|
||||||
|
|
||||||
|
```golang
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"net/http"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
ended := make(chan bool)
|
||||||
|
f, flushable := w.(http.Flusher)
|
||||||
|
if flushable {
|
||||||
|
go func() {
|
||||||
|
ticker := time.NewTicker(1 * time.Second)
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <-ticker.C:
|
||||||
|
fmt.Println("debug")
|
||||||
|
io.WriteString(w, "#")
|
||||||
|
f.Flush()
|
||||||
|
case <-ended:
|
||||||
|
return
|
||||||
|
case <-r.Context().Done():
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
time.Sleep(5 * time.Second)
|
||||||
|
ended <- true
|
||||||
|
w.Write([]byte("ok"))
|
||||||
|
})
|
||||||
|
|
||||||
|
http.ListenAndServe(":8080", nil)
|
||||||
|
}
|
||||||
|
```
|
Loading…
Reference in a new issue