对于帮助决策的REST端点来说,什么是一个好的实践

对于帮助决策的REST端点来说,什么是一个好的实践,rest,api,api-design,Rest,Api,Api Design,假设我有以下端点: /operations/needed 这将有两个答案: 需要手术 不需要手术 对于响应,什么是好的做法? 以下是我的一些想法: A B C 你更喜欢哪一个?(为什么?) 请记住,不管是好是坏,我们都不会在其他任何地方使用HATEOAS类型的响应。REST针对大粒度超媒体传输进行了优化(想想“网页”)。试图传达一点信息真的不是一个好地方 一种常见的方法是注意HTTP可以区分“不存在”和“空”。当资源为空时,我们可以发送具有内容长度头的响应,也可以发送完全没有实体体的响应。当资

假设我有以下端点:

/operations/needed
这将有两个答案:

  • 需要手术
  • 不需要手术
  • 对于响应,什么是好的做法? 以下是我的一些想法:

    A

    B

    C

    你更喜欢哪一个?(为什么?) 请记住,不管是好是坏,我们都不会在其他任何地方使用HATEOAS类型的响应。

    REST针对大粒度超媒体传输进行了优化(想想“网页”)。试图传达一点信息真的不是一个好地方

    一种常见的方法是注意HTTP可以区分“不存在”和“空”。当资源为空时,我们可以发送具有内容长度头的响应,也可以发送完全没有实体体的响应。当资源没有可用的表示时,则是适当的

    因此,您将找到使用204/404指示是否设置了标志的API

    就是采用这种方法的一个例子

    也可以将其视为一种资源,其表示形式根据位是否设置而变化

    您的
    C
    方法可能是其中最“RESTful”的一种方法——提供/删除到其他资源的链接作为与REST客户机通信的一种方式是很正常的,即当前可用的应用程序状态转换。再一次,想想网页——只有当有更多的项目要看时,才有“第2页”链接,当你已经在末尾时,就没有“下一页”链接,以此类推。这是HATEOAS方法


    但所有这些都是“好的”。

    我的意见是,在这些选择中,A是最清晰的,也是我会使用的。A如果你需要回答是/否。C如果你需要回答所需内容的列表(为了一致性,
    []
    null
    更好)。B如果你想忽略
    400坏请求的含义(谁需要标准,对吗?:P)。我见过坏请求是这样实现的。我知道这不好,但我想把它包括进去。B是不可取的,因为它说的是“坏请求”,即使请求不是坏的。
    
    {"operationNeeded":true}
    
    OK->Not needed
    Bad_request->Needed
    
    {"operation":"/operations"} -> Needed
    {"operation":null} -> Not needed