V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
hamalz
V2EX  ›  问与答

请教关于 http 状态码的问题

  •  
  •   hamalz · 2017-06-10 23:46:09 +08:00 · 1783 次点击
    这是一个创建于 2734 天前的主题,其中的信息可能已经有所发展或是发生改变。

    访问一个 api 来验证数据,比如说 email 是否已注册过或者是验证码之类的,验证失败了返回 400 bad request 还是 403 forbidden ?不太理解两个的区别

    9 条回复    2017-06-11 10:35:06 +08:00
    crab
        1
    crab  
       2017-06-10 23:47:22 +08:00
    返回 200 更好吧,然后响应内容标志是否注册这样。
    qiayue
        2
    qiayue  
       2017-06-10 23:49:12 +08:00
    400 说的是请求错误,在 api 这个场景中一般是缺少参数
    403 一般表示权限不对,比如未登录,或者已登录但你请求的是别人的信息
    noe132
        3
    noe132  
       2017-06-10 23:50:51 +08:00
    2xx 是请求成功
    3xx 是资源已被转移
    4xx 是请求失败
    5xx 是服务器错误

    要返回查询结果,肯定是请求成功啊。
    hamalz
        4
    hamalz  
    OP
       2017-06-10 23:59:43 +08:00
    @crab
    @noe132
    意思是用 200 表示请求本身是成功的,然后通过响应内容来判断验证结果?我想的是直接通过状态码来判断验证结果。
    flynaj
        5
    flynaj  
       2017-06-11 00:03:22 +08:00 via Android
    API 肯定是 200,看看其他人写的
    wly19960911
        6
    wly19960911  
       2017-06-11 00:10:57 +08:00 via Android
    不要根据状态码好,你是用 400 作为错误,假如测试真的出现 400 错误不要调试半天?

    还是返回数据判断最好,以后也好改
    hamalz
        7
    hamalz  
    OP
       2017-06-11 00:15:27 +08:00
    @crab
    @flynaj
    @wly19960911
    我明白了,感谢回答
    imn1
        8
    imn1  
       2017-06-11 00:15:48 +08:00
    首先,这个状态码完全可以在后台程序设定,并不能完全确认
    400 一般是判断来自客户端的请求不合理
    401 一般是客户端身份判断不正确,例如登录没通过
    403 多是服务器端主动拒绝
    oh
        9
    oh  
       2017-06-11 10:35:06 +08:00 via iPhone
    如果想用 http 状态码做判断,记得上 https,不然有些地区运营商会把非 200 劫持,返回一个 200 状态的 html 页面
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5569 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 03:39 · PVG 11:39 · LAX 19:39 · JFK 22:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.