Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Go url parameters mapping

Is there a native way for inplace url parameters in native Go?

For Example, if I have a URL: http://localhost:8080/blob/123/test I want to use this URL as /blob/{id}/test.

This is not a question about finding go libraries. I am starting with the basic question, does go itself provide a basic facility to do this natively.

like image 299
Somesh Avatar asked Mar 23 '15 13:03

Somesh


People also ask

How do you assign parameters to a URL?

To add a parameter to the URL, add a /#/? to the end, followed by the parameter name, an equal sign (=), and the value of the parameter. You can add multiple parameters by including an ampersand (&) between each one.

How do I add a parameter to a URL query?

Query parameters are a defined set of parameters attached to the end of a url. They are extensions of the URL that are used to help define specific content or actions based on the data being passed. To append query params to the end of a URL, a '? ' Is added followed immediately by a query parameter.

What is URL path parameter?

Path parameters are variable parts of a URL path. They are typically used to point to a specific resource within a collection, such as a user identified by ID. A URL can have several path parameters, each denoted with curly braces { } .


1 Answers

There is no built in simple way to do this, however, it is not hard to do.

This is how I do it, without adding a particular library. It is placed in a function so that you can invoke a simple getCode() function within your request handler.

Basically you just split the r.URL.Path into parts, and then analyse the parts.

// Extract a code from a URL. Return the default code if code // is missing or code is not a valid number. func getCode(r *http.Request, defaultCode int) (int, string) {         p := strings.Split(r.URL.Path, "/")         if len(p) == 1 {                 return defaultCode, p[0]         } else if len(p) > 1 {                 code, err := strconv.Atoi(p[0])                 if err == nil {                         return code, p[1]                 } else {                         return defaultCode, p[1]                 }         } else {                 return defaultCode, ""         } } 
like image 104
Jay Avatar answered Sep 24 '22 01:09

Jay