- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我无法让名为 emptysuccess 的处理程序工作。我正在将 sendgrid 变成一个 appspot 微服务。迄今为止调用
返回
404 page not found
这个行为是真实的 dev_appserver.py 和真正的 appspot.com。如何让/emptysuccess 工作?
package sendmail
import (
"fmt"
"github.com/sendgrid/sendgrid-go"
"net/http"
"google.golang.org/appengine"
"github.com/gorilla/mux"
"google.golang.org/appengine/log"
)
func main() {
r := mux.Router{}
r.HandleFunc("/send", sendhardcoded)
r.HandleFunc("/emptysuccess", emptysuccess)
//appengine.Main() // Starts the server to receive requests
}
func emptysuccess(w http.ResponseWriter, r *http.Request) {
fmt.Println(w, "Hello Success")
}
func sendhardcoded(w http.ResponseWriter, r *http.Request) {
ctx := appengine.NewContext(r)
log.Infof(ctx, "Running Sendhardcoded")
request := sendgrid.GetRequest("SG.OYPDF6hA.zk_XibKbJEUVLQfrkY-SBu5FejFakeC9ODFv1bE", "/v3/mail/send", "https://api.sendgrid.com")
request.Method = "POST"
request.Body = []byte(` {
"personalizations": [
{
"to": [
{
"email": "darian.hickman@gmail.info"
}
],
"subject": "Sending with SendGrid is Fun"
}
],
"from": {
"email": "darian.hickman@ccc.com"
},
"content": [
{
"type": "text/plain",
"value": "and easy to do anywhere, even with Go"
}
]
}`)
response, err := sendgrid.API(request)
if err != nil {
log.Errorf(ctx, "Problems: %v" ,err)
} else {
fmt.Println(w, response.StatusCode)
fmt.Println(w, response.Body)
fmt.Println(w, response.Headers)
fmt.Println(w, "Sendmail should have worked")
}
}
还要确保所有请求都转到 go 应用程序,我的 app.yaml 是:
runtime: go
api_version: go1.9
handlers:
- url: /static
static_dir: static
- url: /.*
script: _go_app
login: required
secure: always
最佳答案
这是最终起作用的:1. 我像 mkopriva 指出的那样修复了多路复用器代码。 (注意:http.handleFunc 而不是 http.Handle 不起作用)。2. 我不得不将 main() 更改为 init(),然后 App Engine 确认了我的多路复用器设置。
所以基本上我了解到 go 应用程序引擎本身无法处理多个处理程序的困难方法,并且我通过设置 mux 搞砸了。
工作代码:
package sendmail
import (
"fmt"
_"github.com/sendgrid/sendgrid-go"
"net/http"
"google.golang.org/appengine"
"github.com/gorilla/mux"
"google.golang.org/appengine/log"
)
func init() {
r := mux.NewRouter()
r.HandleFunc("/send", sendhardcoded)
r.HandleFunc("/emptysuccess", emptysuccess)
//appengine.Main() // Starts the server to receive requests
http.Handle("/", r)
}
func emptysuccess(w http.ResponseWriter, r *http.Request) {
fmt.Println(w, "Hello Success")
}
func sendhardcoded(w http.ResponseWriter, r *http.Request) {
ctx := appengine.NewContext(r)
log.Infof(ctx, "Running Sendhardcoded")
}
关于google-app-engine - Mux 和 http.HandleFunc 都适用于 Google App Engine 上的 helloworld 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49584588/
我正在尝试编写简单的 http 服务器,它将为 API 请求提供服务。这是一个代码: type Config struct { ListenPort int `json:"listenPort
我正在制作验证码并按照示例 given here .我需要修改示例以使用 gorilla mux 的路由,因为我的应用程序的其余部分使用它。对于我的生活,我无法弄清楚如何正确路由该示例的第 47 行的
我正在关注 simple web server example在围棋中。 我插入了一条 log 语句,结果代码如下所示: package main import ( "io" "log
我需要在提供静态内容、html、css 和 js 时设置一个 cookie。 下面的代码提供一个裸 html 文件,没有 css 等。 所有的 css 和 js 都位于与 index.html 相同级
我正在尝试根据 Go 中的模式重定向 URL。如果我的 URL 包含“clientApi”,那么我将它发送到 clientApiPoint func,否则我将它发送到 redirectApiPoint
我正在构建一个网页。该页面应该能够处理不同的 http 方法(GET、POST...)。我的页面在技术上工作并处理每种类型的请求,但在 GET 请求的情况下(在根 "/" 处提供 index.html
我想知道代码 1 是否管理内部 goutines 并且可以在请求增加(几十个)时使用一个 CPU 的所有内核,或者如果每个处理程序我必须放置关键字 go 来指示函数处理程序将由一个 gorotine
如何在不在 handlefunc 中显式返回的情况下安全地终止调度程序 (handlefunc) 之外的请求?在下面的代码中,我最终在响应中同时看到“Bad request”和“Not found”,
我正在使用 gorilla web 工具包和 golang,并且有以下代码 func test(w http.ResponseWriter, r *http.Request) { fmt.Pr
我正在开发一个托管在谷歌云 Kubernetes 上的应用程序,它使用 Ingress 来管理到每个服务的路由,然后在每个服务内部有一些使用 golang 的额外路由。 我的问题是:当我尝试向 /ap
我正在使用 net/http 包中的 http.HandleFunc("/resource", resource.Handle) 我想知道是否有办法查看什么路线(在本例中为 /resource)用于将
在 Go(语言)中注册处理程序时,有没有办法在模式中指定通配符? 例如: http.HandleFunc("/groups/*/people", peopleInGroupHandler) * 可以是
我有一些 HTTP 请求,它们共享许多常用功能: package main import ( "net/http" "mypackage" ) func main() { ht
同事! 示例代码是标准的: func echo(w http.ResponseWriter, r *http.Request) { c, _ := upgrader.Upgrade(w, r,
这个问题在这里已经有了答案: Difference between http.Handle and http.HandleFunc? (4 个答案) 关闭 4 年前。 我试图了解 Handle 和
有没有办法获取触发 http.HandleFunc 的当前路由?也许是这样的? http.HandleFunc("/foo/", serveFoo) func serveFoo(rw http.Res
我想在 http.HandleFunc 中设置上下文值。以下方法似乎有效。 虽然我有点担心 *r = *r.WithContext(ctx)。 type contextKey string var m
package main import ( "fmt" "io" "html/template" "net/http" "log" ) type pageFun
这是我第一次尝试用Go(Golang)写一个小博客。现在,我有一个只有几页的小网站。我的 main 包含这个。 http.HandleFunc("/about", about) http.Handle
我正在使用 gorilla/mux 我有这个: router.HandleFunc("/api/v1/register",h.makeRegisterNewUser(v)).Methods("POST
我是一名优秀的程序员,十分优秀!