मैं इंटरनेट पर यह खोज रहा हूं कि यह कैसे करें, लेकिन मैं इसे नहीं ढूंढ पा रहा हूं। मैं अपने सिस्टम के लिए गो और मार्टिनी का उपयोग करके एक साधारण एपीआई गेटवे बनाने की कोशिश कर रहा हूं जिसमें आरईएसटी इंटरफेस चलने वाले कुछ माइक्रोस्कोप हैं। उदाहरण के लिए, मैं अपने users
सेवा 192.168.2.8:8000
पर चल रहे हैं, और मैं के माध्यम से /users
जाओ सरल एपीआई गेटवे प्रॉक्सी
इसे उपयोग करने में तो मेरी एपीआई प्रवेश द्वार कुछ इस तरह दिखेगा हैं:
package main
import (
"github.com/codegangsta/martini"
"net/http"
)
func main(){
app := martini.Classic()
app.Get("https://stackoverflow.com/users/:resource", func(req *http.Request, res http.ResponseWriter){
//proxy to http://192.168.2.8:8000/:resource
})
app.Run()
}
संपादित
मुझे कुछ काम मिल गया है, लेकिन मुझे लगता है कि [vhost v2] release 2.2.5
:
package main
import(
"net/url"
"net/http"
"net/http/httputil"
"github.com/codegangsta/martini"
"fmt"
)
func main() {
remote, err := url.Parse("http://127.0.0.1:3000")
if err != nil {
panic(err)
}
proxy := httputil.NewSingleHostReverseProxy(remote)
app := martini.Classic()
app.Get("https://stackoverflow.com/users/**", handler(proxy))
app.RunOnAddr(":4000")
}
func handler(p *httputil.ReverseProxy) func(http.ResponseWriter, *http.Request, martini.Params) {
return func(w http.ResponseWriter, r *http.Request, params martini.Params) {
fmt.Println(params)
r.URL.Path = "/authorize"
p.ServeHTTP(w, r)
}
}
संपादित 2
यह केवल जब यह सीधे का उपयोग कर ब्राउज़र, XMLHttpRequest
काम करता है ठीक माध्यम से एक समस्या लगती है
उपयोगकर्ता मार्टिनी के लिए कोई कारण ... आप नेट/http पैकेज के साथ सब कुछ कर सकते हैं। –
मुझे पता है, लेकिन इसे कुछ स्थिर फ़ाइल सेवा और अन्य चीजों को भी करना होगा, गेटवे केवल एप्लिकेशन का हिस्सा है – Dirk