• 请不要在回答技术问题时复制粘贴 AI 生成的内容
zjiecode
V2EX  ›  程序员

你有没有特别想吐槽的后端接口?

  •  
  •   zjiecode · Jan 4, 2020 · 8305 views
    This topic created in 2496 days ago, the information mentioned may be changed or developed.

    不知道各位的公司,后端接口有没有一些规范?

    我之前遇到一个后端 RD,定义 GET 请求,但是,需要在 body 里面添加数据,感觉特别怪异?这种为啥不直接用 post,各位觉得呢?

    50 replies  •  2020-01-06 16:12:02 +08:00
    Pastsong
    Pastsong
    Jan 4, 2020 via Android
    1
    get 传 body 是未定义行为,很多服务器是直接扔掉的
    a1056151086
    a1056151086
    Jan 4, 2020 via Android
    2
    我以前试过前端 get 传 body 好像后端会报错还是接收不到的吧?
    loading
    loading
    Jan 4, 2020
    3
    如果还没开发,按 restful api 进行一般性规范还是可以的,可以参考一下。
    对于已经开发完毕,或者第三方的,只要有文档都可以的,没什么问题。
    sgiyy
    sgiyy
    Jan 4, 2020
    4
    今年最想吐槽的是,我跟后端说保存数据和修改的时候咱们用 post 传递数据,然而一个 team 里 4 个后端都来跟我说 POST 怎么拿不到数据,我还搜索了一下 Java 例子发给他们,合着他们一直就会用 GET 啊 😱。
    wangyzj
    wangyzj
    Jan 4, 2020
    5
    感觉一种一类迷糊加密行为呢
    viator42
    viator42
    Jan 4, 2020 via Android
    6
    性别用布尔值,肯定不对但常识上来说又没有什么不对
    rainbowchou
    rainbowchou
    Jan 4, 2020
    7
    如果只对接自己的服务器处理貌似没什么问题

    不过这么基础的东西都要乱来,是不是真不懂?
    wysnylc
    wysnylc
    Jan 4, 2020
    8
    @viator42 #6 任何时候都不要用布尔,因为经常会让你在 if else 里加 else if,写成 1,2,3 扩展性强
    jss
    jss
    Jan 4, 2020 via iPhone
    9
    @viator42 性别用布尔 第一次听说 那保密该选啥?
    xfspace
    xfspace
    Jan 4, 2020 via Android
    10
    @jss null
    dr1q65MfKFKHnJr6
    dr1q65MfKFKHnJr6
    Jan 4, 2020
    11
    @jss 保密是系统定义的控制的安全行为,po -> vo 转换过程中控制。
    guyeu
    guyeu
    Jan 4, 2020
    12
    @jss #9
    @wysnylc #8
    性别应该用枚举,那是因为有可能存在男女之外的选项;

    在恰当的时候用恰当的数据类型,bool 无论如何都应该在选择范围内,那是因为很多场景下 bool 是最合适的。
    比如说开关。
    skinny
    skinny
    Jan 4, 2020
    13
    用 GET 发送 BODY 数据的就别提规范了……
    ZXCDFGTYU
    ZXCDFGTYU
    Jan 4, 2020❤️2
    14
    tt67wq
    tt67wq
    Jan 4, 2020
    15
    你们这后端也太蔡了吧
    xjmroot
    xjmroot
    Jan 4, 2020 via iPhone
    16
    limit 参数可以填无穷大
    EminemW
    EminemW
    Jan 4, 2020 via iPhone
    17
    @sgiyy 你们用的 neety 吧
    autulin
    autulin
    Jan 4, 2020 via iPhone
    18
    规范的最终目的是实现众所周知的统一,es 的 http 查询 dsl 从 body 带为什么大家不喷,只要同一个团体有一定的统一就好了
    JJstyle
    JJstyle
    Jan 4, 2020 via iPhone
    19
    bool 看着符合语义,但是经常遇到后面要加一个值过来。
    gitjavascript
    gitjavascript
    Jan 4, 2020
    20
    直接给后端说不就好了,post 传 query 我能忍,get 传 body 是几个意思
    hantsy
    hantsy
    Jan 4, 2020
    21
    头一回听说用 Get Body 传数据。不讨论这个了,又是 REST 设计问题,月经了。
    xianyu0
    xianyu0
    Jan 4, 2020
    22
    get 请求带 body,从 http 协议的角度讲,并没有不规范吧,http 没规定 get 请求不能带 body 呀。

    elasticsearch 的查询,不就是 get 请求带 body 吗?

    只不过很少这样用,而且有些软件可能不支持而已。

    当然,我是反对 get 请求带 body 的……另外,后台接口难道还限制你只能用 get ?不给用 post ?
    ceet
    ceet
    Jan 4, 2020
    23
    查询的接口是 post。 请求的数据是 sql。直接传 sql 给后台。 后台做了过滤而已。美名曰提高效率。
    stimulate1797
    stimulate1797
    Jan 4, 2020
    24
    @ceet 直接传 SQL ? drop table "xxx"
    xiaoyt0909
    xiaoyt0909
    Jan 4, 2020
    25
    @xianyu0 后端接口是可以限制请求方式的,一般除了查询用 get,其它的都用 post
    cszchen
    cszchen
    Jan 4, 2020
    26
    @ceet 能给个地址观摩一下不[邪恶]
    xianyu0
    xianyu0
    Jan 4, 2020
    27
    @xiaoyt0909 我当然知道可以限制,我就是做后台的……我的意思是,后台的某个接口一般会同时允许 get 和 post,不会只允许 get 不允许 post,最多也只是允许 post 不允许 get (出于某些限制,比如提交数据比较多,或者不想参数出现在 url 里、等等)
    cszchen
    cszchen
    Jan 4, 2020
    28
    @xianyu0 restful 的规范就是要么只能 get,要么只能 post,一个接口只干一件事,你全搞在一起不仅不规范,维护也难啊
    xianyu0
    xianyu0
    Jan 4, 2020
    29
    @cszchen 一个接口同时支持 get 和 post,怎么就难维护了……后台处理请求的时候,难道会区分这个请求是 get 还是 post ?
    AlexCode
    AlexCode
    Jan 4, 2020
    30
    @sgiyy 我猜,估计 delete、put 就更不用说了,一定没怎么用。
    zhizunzz
    zhizunzz
    Jan 4, 2020
    31
    php 老掉牙版本 页面 input 的 name 是数字 1,2,3,后台 register_globals=on

    一脸得意的告诉我这么办$tmp="1",$var=$$tmp, 我他妈照办了
    AlexCode
    AlexCode
    Jan 4, 2020
    32
    @viator42 性别用布尔,的确不好处理,男女可以表示,未知性别一下就蒙了
    Erskine
    Erskine
    Jan 4, 2020
    33
    主板上面的 VGA 可以吐槽吗
    zjiecode
    zjiecode
    OP
    Jan 4, 2020
    34
    @ZXCDFGTYU 这个感觉 ,后端的人也太业余了吧
    NobodyIsMe
    NobodyIsMe
    Jan 4, 2020
    35
    @xianyu0 惊了,合着你写的 某个 API 都是同时支持 GET 和 POST 的?
    slyang5
    slyang5
    Jan 4, 2020
    36
    @xianyu0 因为他的 get 带 body 被好多开源库吐槽了 及其不规范
    xianyu0
    xianyu0
    Jan 4, 2020
    37
    @LinJunzhu 没错,我的绝大部分接口既允许 get,也允许 post。限制一个接口只允许 get 或只允许 post 有什么好处? query string 从 url 里取 和 从 request body 里取 有任何区别吗?
    darknoll
    darknoll
    Jan 4, 2020 via Android
    38
    get 带 body,长见识了
    a852695
    a852695
    Jan 4, 2020
    39
    看到过有后端传文件接口,把文件内容写 query string 的,url 直接被 ngx 拦了
    Varobjs
    Varobjs
    Jan 4, 2020
    40
    吐槽下很多大公司的接口文档
    有的写着 GET/POST 实际只能 POST
    有的写着 返回 xx 实际从来不返回

    全靠猜
    xuanbg
    xuanbg
    Jan 4, 2020
    41
    我司全用 POST,无他,简单。返回有统一的格式,成功取 data,失败输出 message,只有很少情况需要根据 code 处理。

    只是 url 乱七八糟的没眼看……
    dodo2012
    dodo2012
    Jan 4, 2020
    42
    一直 rest 规范来的,可能 和用了很多年 rails 有关,习惯了
    DavidNineRoc
    DavidNineRoc
    Jan 5, 2020
    43
    @xianyu0 当然区分,GET:/users 获取用户列表, POST:/users 创建用户 参考 RESTFul
    fewok
    fewok
    Jan 5, 2020❤️1
    44
    别追着规范约定吐槽,这样仿佛前端小萌新。。。

    要从指标上吐槽
    比如:耗时好几秒的接口,居然不搞异步; TP50 和 TP90 差别这么大; QPS 超 1 就异常;接口性能不清楚就使用。
    要从数据上吐槽
    比如:几百 KB 的数据居然不 gzip 下;同一字段,即使字符串,也是对象; json 的 key 居然是变量。
    要从使用上吐槽
    比如:没有幕等;没有防重;没有鉴权;还能日常暂停使用(特指各大银行+火车)。
    Torpedo
    Torpedo
    Jan 5, 2020
    45
    get 可以发 body,但是浏览器不支持。
    你们后端是不是直接用了 spring,方便就直接 get body 里取数据了
    luozic
    luozic
    Jan 5, 2020 via iPhone
    46
    最基本的幂等性不支持的接口见识过没有。
    NobodyIsMe
    NobodyIsMe
    Jan 5, 2020
    47
    @xianyu0 一个接口允许 GET 和 POST 有什么好处?
    FightForFreedom
    FightForFreedom
    Jan 5, 2020
    48
    @LinJunzhu 可能是既让 restful 警察爽到,又照顾了对 rest 没啥热衷的普罗大众?
    zjiecode
    zjiecode
    OP
    Jan 5, 2020
    49
    @DavidNineRoc 对,我也比较喜欢这种 ,DELETE:/users 删除用户, PUT:/users 修改用户
    mysunshinedreams
    mysunshinedreams
    Jan 6, 2020
    50
    楼上的,get 为什么不能用 body,HTTP 规范并没有限制,限制的是浏览器和网关,Spring 也没有进行限制。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2951 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 83ms · UTC 12:46 · PVG 20:46 · LAX 04:46 · JFK 07:46
    ♥ Do have faith in what you're doing.