Sunday, November 16, 2014

Routing for a Go Web Project

From a python programmer's perspective, these are lessons I've learned from developing a web app using Go.

After I've planned my project structure for my go app, I started to look into how I should go about developing the app itself. I read the detailed tutorial from the golang wiki wiki site. Although it seemed simple enough to build a web app, I immediately recognized some things I would miss from the python/django world. For example, I didn't want to have code in my view to parse and validate the URLs. I started to look around for a solution and came across Gorilla Toolkit, specifically the mux package. It provided functionality that I was more accustomed to when I was using Django.
In the case of capturing values from the URL or applying a regex to the URL, you would specify routes as:
r := mux.NewRouter()
r.HandleFunc("/products/{key}", ProductHandler)
r.HandleFunc("/articles/{category}/", ArticlesCategoryHandler)
r.HandleFunc("/articles/{category}/{id:[0-9]+}", ArticleHandler)
In the ArticleHandler function, you can retreive the value of "category" or "id" by:
vars := mux.Vars(request)
category := vars["category"]
id := vars["id"]
You can also restrict access to a view handler by specifying the request to use a specific method:
r.Methods("GET", "POST")
or requiring the request to use specific headers:
r.Headers("X-Requested-With", "XMLHttpRequest")
You can view the mux documentation all the functionality available. In general, this package helps remove a lot of boilerplate code from the view functions and makes a Django developer feel more at home when building a go web app.

4 comments:

  1. Replies
    1. Big data is a term that describes the large volume of data – both structured and unstructured – that inundates a business on a day-to-day basis. big data projects for students But it’s not the amount of data that’s important.Project Center in Chennai

      Spring Framework has already made serious inroads as an integrated technology stack for building user-facing applications. Corporate TRaining Spring Framework the authors explore the idea of using Java in Big Data platforms.

      Spring Training in Chennai

      The new Angular TRaining will lay the foundation you need to specialise in Single Page Application developer. Angular Training

      Delete