栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

终止或中止HTTP请求

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

终止或中止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错误代码,而不是隐含的default

200OK
。为此,您可以使用
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 depreParams(r *http.Request) (*params, error) {    p := new(params)    // depre 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 := depreParams(r)    if err != nil {        http.Error(w, `Invalid input params!`, http.StatusBadRequest)        return    }    // Do normal API serving})


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/446347.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号