终止或中止HTTP请求
通过某些错误消息中止我的 服务的方式是什么?
链接致电我的服务:
http://creative.test.spoti.io/api/getVastPlayer?add= {"Json":Json}&host=api0.spoti.io&domain=domain&userAgent=userAgent&mobile=true
要给我的服务打电话,客户需要发送一个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}
回答:
终止HTTP请求" title="HTTP请求">HTTP请求的服务无非是从ServeHTTP()
方法中返回,例如:
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // examine incoming params
if !ok {
str := `{"Result":"","Error":"No valide Var"}`
fmt.Fprint(w, str)
return
}
// Do normal API serving
})
panic(http.ListenAndServe(":8080", nil))
如果API服务的输入参数无效,则应考虑返回HTTP错误代码,而不是隐含的default200OK
。为此,您可以使用http.Error()
函数,例如:
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // examine incoming params
if !ok {
http.Error(w, `Invalid input params!`, http.StatusBadRequest)
return
}
// Do normal API serving
})
对于更复杂的示例,其中您将JSON数据与错误代码一起发送回:
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // examine incoming params
if !ok {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusBadRequest)
str := `{"Result":"","Error":"No valide Var"}`
fmt.Fprint(w, str)
return
}
// Do normal API serving
})
如果在之外(ServeHTTP()
例如在从中调用的函数中)检测到错误,则ServeHTTP()
必须返回此错误状态ServeHTTP()
才能返回。
假设您具有以下用于所需参数的自定义类型和一个负责根据请求对其进行解码的函数:
type params struct { // fields for your params
}
func decodeParams(r *http.Request) (*params, error) {
p := new(params)
// decode params, if they are invalid, return an error:
if !ok {
return nil, errors.New("Invalid params")
}
// If everything goes well:
return p, nil
}
使用这些:
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { p, err := decodeParams(r)
if err != nil {
http.Error(w, `Invalid input params!`, http.StatusBadRequest)
return
}
// Do normal API serving
})
以上是 终止或中止HTTP请求 的全部内容, 来源链接: utcz.com/qa/423111.html