草庐IT

go - 在 http 中提供 zip 文件中的内容

我正在查看github.com/remyoudompheng/go-misc/zipfs以提供来自http中的zip文件的内容。这个最小的例子有效,我可以获得包含在files/archives.zip中的{FILE}:http://localhost:8080/zip/{FILE}packagemainimport("archive/zip""github.com/remyoudompheng/go-misc/zipfs""log""net/http")funcmain(){z,err:=zip.OpenReader("files/archive.zip")iferr!=nil{log

http - 在重定向和代理上转到 http.Request header

https://groups.google.com/forum/#!topic/golang-nuts/OwGvopYXpwE正如在此线程中所见,当http.Client向重定向发送请求时,header会重置。有一个解决方法,如:client.CheckRedirect=func(req*http.Request,via[]*http.Request)error{iflen(via)>=10{returnfmt.Errorf("toomanyredirects")}iflen(via)==0{returnnil}forattr,val:=rangevia[0].Header{if_,o

go - 捕获传递给 http.Server.Serve 的 net.Listener

我想通过执行正常关闭和我将在我的HTTP服务中共享的其他一些小工具来扩展http.Server功能。目前我的代码或多或少说:typeMyServerstruct{server*http.Server//...}func(s*MyServer)ListenAndServe(){//Createlistenerandpasstos.server.Serve()}这很有效很好,但是需要手动公开http.Server的所有必要方法和变量。包装大多数方法不会是一个大问题,但我无法找到一种明智的方法来公开对http.Server.ListenAndServeTLS的访问,而无需实际从thesour

http - 在测试golang中杀死正在运行的进程

基于http.ListenAndServe编写程序并编写测试我遇到了麻烦。我的测试看起来像这样packagemainimport("testing""../")funcTestServer(t*testing.T){Server.Server()}和测试函数packageServerimport("net/http")var(DefaultPort="8080"DefaultDir=".")funcServer(){port:=DefaultPortdirectory:=DefaultPorthttp.ListenAndServe(":"+port,http.FileServer(ht

json - 抽象 GET、读取、解码逻辑

我的应用程序进行了大量的API调用,我正试图消除围绕它的一些重复。从概念上讲,每次都会重复以下步骤:发出GET请求检查错误阅读响应正文检查错误反序列化为目标结构检查错误返回目标结构所有调用之间唯一显着的区别是目标结构。在代码中它看起来像这样:funcgetUsers()([]User,error){resp,err:=http.Get(someUrl)iferr!=nil{returnnil,err}ifresp.StatusCode!=200{returnnil,errors.New("Searchreturnnon200statuscode")}deferresp.Body.Clo

go - 我无法使用以下代码检索访问 token

funchandler(whttp.ResponseWriter,r*http.Request){t:=&oauth.Transport{Config:config}c:=r.FormValue("code")token,err:=t.Exchange(c)fmt.Println("token:",token,"\nerr:",err)}错误:token:err:OAuthError:updateToken:UnexpectedHTTPstatus400BadRequest 最佳答案 你用goauth2吗?包,哪个被弃用了?如果是这

rest - Go Gorilla Mux 没有按预期路由

我在使用Go的GorillaMux库时遇到问题。从我阅读的文档和我所做的所有调试中,我似乎无法弄清楚问题是什么。这是我的路由:文件夹结构:project_root|--main.go|--routes|--routes.go|--user.gomain.go:packagemainimport("fmt""net/http""./routes")funcmain(){r:=routes.CreateRoutes(http.Dir("./content"))http.Handle("/",r)err:=http.ListenAndServe(fmt.Sprintf("%s:%d","lo

go - 在 martini.Context 中获取请求 url

我想给自己发送电子邮件,但页面http://localhost:3000/panic出现错误包含错误url-/panic在我们的例子中。但是我不知道如何从RecoverWrap方法中的cmartini.Context获取url。packagemainimport("errors""github.com/go-martini/martini""net/http")funcmain(){m:=martini.Classic()m.Use(RecoverWrap)m.Get("/panic",func(){panic("somepanic")})m.Get("/",func(req*http

java - 谷歌云端点生成 Java api HTTP 400 错误

嘿,我正在尝试使用此文档开发一个休息APIgo-endpoints我可以在本地和应用引擎上测试我的应用。但我无法创建Java客户端以便在Android设备上使用它,出于某种原因,我得到了一个HTTP400NoJSONobjectcouldbedecoded在这个命令上GO_SDK/endpointscfg.pygen_client_libjavaMY_FILE_NAME这是完整的堆栈跟踪mik@mik-Aspire-S3:~/go-programs/src/cloudEndPoints/app$$HOME/go_appengine/endpointscfg.pygen_client_l

go - 进入并运行不玩好

我正在go中进行一些轻量级Web开发,并遇到entr的问题.我正在编辑目录中的.go文件,同时拥有ls*.go|entr-rgorun*.go在单独的终端窗口中运行。我每次保存文件时都可以看到它重新启动我的程序,因为每次我这样做时都会将一些格式语句打印到终端。但是,每当我导航到localhost:8080时,我都会看到启动entr时出现的处理程序内容(而不是最近更改中的内容)。如果我Ctrl+C,然后重新启动entr,我会看到最新的更改。知道我做错了什么吗?这是最小的例子://test.gopackagemainimport("fmt""net/http")funchandler(wh