Skip to content

Instantly share code, notes, and snippets.

@tardieu
Last active November 8, 2022 02:31
Show Gist options
  • Save tardieu/f63af75710297a2983ebf5889249c061 to your computer and use it in GitHub Desktop.
Save tardieu/f63af75710297a2983ebf5889249c061 to your computer and use it in GitHub Desktop.
Knative sticky revisions: example golang client
package main
import (
"fmt"
"net/http"
"os"
)
const header = "Knative-Serving-Tag"
func main() {
// 1st request, let Knative decide target revision
req, err := http.NewRequest("GET", os.Args[1], nil)
if err != nil {
panic(err)
}
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
if resp.StatusCode != 200 {
panic(fmt.Errorf("unexpected status code: %v ", resp.StatusCode))
}
rev := resp.Header.Get(header)
fmt.Println("request 1 was processed by revision", rev)
// 2nd request, return to previously selected revision
req, err = http.NewRequest("GET", os.Args[1], nil)
req.Header.Set(header, rev)
if err != nil {
panic(err)
}
resp, err = http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
rev = resp.Header.Get(header)
fmt.Println("request 2 was processed by revision", rev)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment