使用某些错误消息中止我的API服务的方法是什么?
链接拨打我的服务:
http://creative.test.spoti.io/api/getVastPlayer?add=
{"Json":Json}&host=api0.spoti.io&domain=domain&userAgent=userAgent&mobile=true
Run Code Online (Sandbox Code Playgroud)
要调用我的服务,客户端需要发送一个Json和一些参数.
我想测试我得到的参数是否正确,如果不是我想发送错误信息.
响应应该是Json代码 {"Result":"Result","Error":"error message"}
我试过log.fatal,os.Exit(1)他们停止服务,而不仅仅是通话请求.panic中止调用,但它阻止我发送一个http.ResponseWriter是我的错误消息.
我读了一些关于恐慌,推迟,恢复的内容,但我真的不知道如何使用它们来解决这个问题.
return 作品:
mobile :=query.Get("mobile")
if mobile=="mobile" {
str:=`{"Resultt":"","Error":"No valide Var"}`
fmt.Fprint(w, str)
fmt.Println("No successfull Operation!!")
return}
Run Code Online (Sandbox Code Playgroud)
但我只能在main函数中使用它,因为在其他函数中它只退出func而不是调用函数(request).
给出以下代码:
type Message struct {
Params map[string]interface{} `json:"parameters"`
Result interface{} `json:"result"`
}
func (h Handler) Product(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
msg := &Message{
Action: "get_products",
Params: {
"id1": val1,
"id2": val2,
},
}
h.route(msg)
}
Run Code Online (Sandbox Code Playgroud)
我们的想法是能够将未知量的块id1 => val1,id2 => val2 ...发送到h.route.
它给了我这个错误:
复合文字中缺少类型
func main() {
http.HandleFunc("/", foo)
http.ListenAndServe(":3000", nil)
}
func foo(w http.ResponseWriter, r *http.Request) {
s:= "name"
fp := path.Join("templates", "index.html")
tmpl, err := template.ParseFiles(fp)
if err != nil {
panic(err)
}
if err := tmpl.Execute(w, s); err != nil {
panic(err)
}
fmt.Println("successfull Operation!!")
}
Run Code Online (Sandbox Code Playgroud)
此代码显示2"successl Operation !!" 但是当我添加/home(http.HandleFunc("/home", foo))时,它没有.我想知道为什么它显示"成功操作!!" 两次.先感谢您.