- Hands-On RESTful Web Services with Go
- Naren Yellavula
- 314字
- 2021-06-24 17:04:27
Query-based matching
Query parameters are variables that get passed along with the URL in an HTTP request. This is what we commonly see in a REST GET request. The gorilla/mux route can match and collect query parameters. See this following URL, for example:
http://localhost:8000/articles?id=123&category=books
It has id and category as query parameters. All query parameters begin after the ? character.
Let us modify our copy of our previous example into a new one with the name queryParameters/main.go. Modify the route object to point to a new handler called QueryHandler, like this:
// Add this in your main program
r := mux.NewRouter()
r.HandleFunc("/articles", QueryHandler)
In QueryHandler, we can use request.URL.Query() to obtain query parameters from the HTTP request. QueryHandler looks like this:
// QueryHandler handles the given query parameters
func QueryHandler(w http.ResponseWriter, r *http.Request) {
queryParams := r.URL.Query()
w.WriteHeader(http.StatusOK)
fmt.Fprintf(w, "Got parameter id:%s!\n", queryParams["id"][0])
fmt.Fprintf(w, "Got parameter category:%s!", queryParams["category"][0])
}
This program is similar to the previous example, but processes query parameters instead of path parameters.
Run the new program:
go run $GOPATH/src/github.com/git-user/chapter2/queryParameters/main.go
Fire a curl request in this format in a Terminal:
curl -X GET http://localhost:8000/articles\?id\=1345\&category\=birds
We need to escape special characters in the shell. If it is in the browser, there is no problem of escaping. The output looks like this:
Got parameter id:1345!
Got parameter category:birds!
The r.URL.Query() function returns a map with all the parameter and value pairs. They are basically strings and, in order to use them in our program logic, we need to convert the number strings to integers. We can use Go's strconv package to convert a string to an integer, and vice versa.
- INSTANT Mock Testing with PowerMock
- Progressive Web Apps with React
- Groovy for Domain:specific Languages(Second Edition)
- Processing互動編程藝術
- Python自然語言處理(微課版)
- 編譯系統透視:圖解編譯原理
- SharePoint Development with the SharePoint Framework
- Mobile Device Exploitation Cookbook
- Getting Started with Polymer
- 從零開始學Android開發
- SwiftUI極簡開發
- Oracle SOA Suite 12c Administrator's Guide
- Java EE輕量級解決方案:S2SH
- Scratch 3.0少兒積木式編程(6~10歲)
- Puppet Essentials