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

http 接口返回图片或错误码,该如何设计?

  •  
  •   abgnwl · 55 天前 · 700 次点击
    这是一个创建于 55 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请求中携带验证信息,验证通过返回图片( 100K 以下),验证不通过返回错误码,请问该如何设计比较合适?

    1. 验证通过后 body 返回图片,content-type: image/xxx ;验证不通过 body 返回 json 格式的错误码+错误信息,content-type: application/json

    2. 图片 base64 后放在 json 中,统一使用 body 返回 json ,content-type: application/json

    3. 验证通过后 body 返回图片,content-type: image/xxx ;通过自定义 header 返回错误码+错误信息

    13 条回复    2021-11-30 17:40:19 +08:00
    WhateverYouLike
        1
    WhateverYouLike  
       55 天前 via Android
    2
    maladroit
        2
    maladroit  
       54 天前
    1 也可以吧,觉得没什么问题
    eason1874
        3
    eason1874  
       54 天前
    对象存储是第一种,JSON 换 XML

    第二种会增加很多流量,base64 增加 30% 体积
    abgnwl
        4
    abgnwl  
    OP
       54 天前
    第一种感觉调用方逻辑会比较奇怪,需要通过 content type 来判断,有的时候处理 json body ,有的时候处理二进制 body
    lower
        5
    lower  
       54 天前
    嫌 base64 体积大,body 里返回 img url 呗
    leoskey
        6
    leoskey  
       54 天前
    返回 image url 可利用上缓存
    xmumiffy
        7
    xmumiffy  
       54 天前 via Android
    方法一 但是验证不通过的 http code 为 403
    xmumiffy
        8
    xmumiffy  
       54 天前 via Android
    @leoskey 这接口可能就是用来当 image url 的
    xmumiffy
        9
    xmumiffy  
       54 天前 via Android
    @xmumiffy 哦 其实和方法三差不多,不过要客户端自己实现判断了
    corningsun
        10
    corningsun  
       54 天前 via iPhone
    1 不推荐。100k 以下,我选 2
    ysc3839
        11
    ysc3839  
       54 天前 via Android
    我选 1 ,前端要支持这种情况就多几行代码而已,但是可以省性能和流量。
    gadfly3173
        12
    gadfly3173  
       54 天前
    1 ,axios 之类的拦截器处理也要不了几行代码
    iseki
        13
    iseki  
       54 天前
    1 ,HTTP 状态码要用起来,至少出错时不许返回 200
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2453 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:59 · PVG 20:59 · LAX 04:59 · JFK 07:59
    ♥ Do have faith in what you're doing.