我想构建一个golang服务,它将监听GET请求,进行一些URL操作,然后将新请求(到被操纵的URL)代理回浏览器:
(来自浏览器 - >服务器)获取http://www.example.com/7fbsjfhfh93hdkwhfbf398fhkef93 ..
(服务器操纵URL - 解密“7fbsjfhfh93hdkwhfbf398fhkef93 ..” - >“my-super-resource”)
(服务器 - >网址资源)GET http://www.somewhereelse.com/my-super-resource
(服务器 - >浏览器)传递给浏览器的http://www.somewhereelse.com/my-super-resource的响应(使用cors)
整个链条需要同步才行。是否有一个像样的代理库允许这种事情?
答案 0 :(得分:1)
您可以使用Sling包在不到10行代码中执行此类操作:
type Foo struct {
Bar string `json:"bar"`
}
func Handler(w http.ResponseWriter, r *http.Request) {
// Get the URL and decrypt it
url := getUrl(r)
decryptedUrl := decryptUrl(url)
// Use the decrypted URL to make a request to another service
var data *Foo
req, err := sling.New().Get(decryptedUrl).Receive(data)
if err != nil {
// Handle error...
}
// Respond to the original request using the data from the other service
respond(w, http.StatusOK, data)
}