小编abd*_*del的帖子

Golang:终止或中止HTTP请求

使用某些错误消息中止我的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).

error-handling http exit go abort

4
推荐指数
1
解决办法
3048
查看次数

使用map [string] interface {}:

给出以下代码:

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.

它给了我这个错误:

复合文字中缺少类型

dictionary interface go

3
推荐指数
1
解决办法
3640
查看次数

http ResponseWriter重复回答golang

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))时,它没有.我想知道为什么它显示"成功操作!!" 两次.先感谢您.

http httpresponse go

0
推荐指数
1
解决办法
221
查看次数

标签 统计

go ×3

http ×2

abort ×1

dictionary ×1

error-handling ×1

exit ×1

httpresponse ×1

interface ×1