V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
afeiche
V2EX  ›  程序员

http 状态码都是 200,业务状态码写在响应体里的 API 接口,返回文件如何处理?

  •  
  •   afeiche · 2 天前 · 898 次点击

    这边的 API 的 http code 都是 200 ,业务错误码都写在响应体里了,现在有个接口返回的是文件,就没办法判断错误码了,这也算这种模式的一个局限性了,只能考虑把文件 base64 放在响应体里吗?

    12 条回复    2025-02-20 11:11:26 +08:00
    RightHand
        1
    RightHand  
       2 天前 via Android
    又不是不能用
    xiaoming1992
        2
    xiaoming1992  
       2 天前 via Android
    有业务错误,就不响应文件(而是响应业务错误码),不就行了。
    BeautifulSoap
        3
    BeautifulSoap  
       2 天前
    接口错误了还返回正常文件吗。。。。
    vincentWdp
        4
    vincentWdp  
       2 天前
    判断 response header 里的 content-type 看是 json 还是其他
    ffLoveJava
        5
    ffLoveJava  
       2 天前
    借此请教个类似的疑问:springBoot +vue
    普通的接口都同意返回一个结果对象封装了状态码、错误信息、返回数据。
    但是返回文件流的接口,比如某些文件添加当前登录用户信息的水印后以流的形式返给前端,这种接口返回类型是 void ,字节流放在 HttpServletResponse 中 flush 返回。 那这种接口出现错误后,比如无权查看、文件被锁定无法查看 等等 怎么返回前端? 前端通过什么判断是一个正常的文件流还是一串错误信息
    EthanZhuXE2V
        6
    EthanZhuXE2V  
       2 天前
    返回文件的 oss 地址?
    chendy
        7
    chendy  
       2 天前
    问题是接口为啥返回文件,直接给用户下载不行么…
    yinmin
        8
    yinmin  
       2 天前 via iPhone
    #4 正解。判断 response header 的 content-type ,如果出错是 application/json ,response body 是包含错误信息的 json 数据;如果正常返回 application/octet-stream ,response body 是二进制文件
    laimikan
        9
    laimikan  
       2 天前
    文件都返回了为啥还有失败?
    xuanbg
        10
    xuanbg  
       2 天前
    不返回文件的 url ?直接返回文件流?
    afeiche
        11
    afeiche  
    OP
       2 天前
    @vincentWdp 也是一种思路,我试试
    sthwrong
        12
    sthwrong  
       1 天前
    @ffLoveJava 思路差不多的,能返回流了那么响应头肯定不一样了,这时候的异常和业务异常无关,业务异常你按常规的比如 json 响应头返回就行了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2765 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 12:52 · PVG 20:52 · LAX 04:52 · JFK 07:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.