||运营商没有按预期工作

时间:2017-03-10 19:50:46

标签: go

这里出了什么问题?我100%确定我正在发送HTTP POST请求,但不知何故,OR运算符不能正常工作。在第一个示例中,服务器返回405,在第二个示例中,代码继续执行。

无效:

if req.Method != http.MethodPost || req.Method != http.MethodDelete {
    http.Error(res, http.StatusText(http.StatusMethodNotAllowed), http.StatusMethodNotAllowed)
    return
}

工作:

if req.Method != http.MethodPost {
    http.Error(res, http.StatusText(http.StatusMethodNotAllowed), http.StatusMethodNotAllowed)
    return
}

2 个答案:

答案 0 :(得分:2)

(不是什么)或者(不是别的互相排斥)总是真的不是吗?

如果是方法发布,则不会删除,反之亦然,您可能需要&& ?

答案 1 :(得分:0)

像肯尼格兰特说的那样,你可能想要思考这个逻辑。也许这就是你的意思:

// only allow POST or DELETE
if req.Method != http.MethodPost && req.Method != http.MethodDelete {
    http.Error(res, http.StatusText(http.StatusMethodNotAllowed), http.StatusMethodNotAllowed)
    return
}