V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hackingwu
V2EX  ›  程序员

Restful 接口,给某个对象的单个字段赋值,如何设计

  •  
  •   hackingwu ·
    hackingwu · 2020-09-21 17:30:19 +08:00 · 1492 次点击
    这是一个创建于 1284 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有一个接口的功能是”确认“某个对象。 我的 Restful API 设计成 PUT /obj/{id}/is_confirmed/{is_confirmed} String id, boolean is_confirmed 这个接口符合 Restful 规范吗? 类似的 URL 你们怎么设计?

    7 条回复    2020-09-22 10:55:21 +08:00
    chinvo
        1
    chinvo  
       2020-09-21 17:33:11 +08:00
    用 PATCH

    PUT 就是覆盖

    而一般来说接口要避免路径过长
    chinvo
        2
    chinvo  
       2020-09-21 17:34:28 +08:00
    chendy
        3
    chendy  
       2020-09-21 17:51:54 +08:00
    PUT /obj/{id}/_confirm 自定义一个动词就行了
    Oktfolio
        4
    Oktfolio  
       2020-09-21 18:29:31 +08:00
    Patch 修改部分值可以使用 Json Patch 。

    至于上述这种接口,可以单独开一个,没必要完全遵照 REST 来定义接口,好用直观就行。

    接口最好使用 "-" 而不是 "_" 噢。
    chinvo
        5
    chinvo  
       2020-09-21 19:57:21 +08:00
    @chendy #3 自定义动词各家实现不太一样, Google 家为了避免和次级资源名冲突(或造成误解), 用的是 PUT /obj/{id}:confirm 这种形式
    rbut
        6
    rbut  
       2020-09-22 09:20:12 +08:00
    @Oktfolio 为什么是最好使用"-"呢
    wizardoz
        7
    wizardoz  
       2020-09-22 10:55:21 +08:00
    不符合,用 PATCH 方法就行

    PATCH /obj/{id}/

    {
    "is_confirmed": true
    }
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1400 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 17:31 · PVG 01:31 · LAX 10:31 · JFK 13:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.