gpt4 book ai didi

api - REST API 具有相同的对象,但很轻

转载 作者:行者123 更新时间:2023-12-04 03:09:22 24 4
gpt4 key购买 nike

我们正在构建一个 REST API 并且我们想要返回相同的对象,但是一个调用是“轻量级”版本(没有所有字段)

最佳做法是什么?

第一种情况

  • 完整版:http://api.domain.com/myobject/ {objectId}
  • 轻量版:http://api.domain.com/myobject/ {objectId}?filter=light

  • 第二种情况
  • 完整版:http://api.domain.com/myobject/ {objectId}/详细信息
  • 轻量版:http://api.domain.com/myobject/ {objectId}

  • 第三种情况
  • 完整版:http://api.domain.com/myobject/ {objectId}?full=true
  • 轻量版:http://api.domain.com/myobject/ {objectId}

  • 第 4 种情况?

    欢迎任何指向 REST API 文档资源的链接!

    谢谢。

    最佳答案

    这应该通过内容协商来处理,这就是它的目的。内容协商是客户端如何请求它想要查看的资源的表示形式。考虑图片的情况:image/x-canon-cr2、image/jpeg、image/png。

    表面上都是相同的图像,但格式不同。

    因此,这是您真正想要用于资源的“精简”版本的机制。例如,您可以使用:

  • 主版本的“application/xhtml+xml”
  • “application/xhtml+xml; lite”用于轻量级版本

  • 因此,对于完整资源:
    GET /resource
    Accept: application/xhtml+xml

    对于轻型版本
    GET /resource
    Accept: application/xhtml+xml; lite

    对于任何一个,但更喜欢精简版:
    GET /resource
    Accept: application/xhtml+xml;lite, application/xhtml+xml

    (更具体的说明符,即带有 ;lite 的说明符,比普通的 applciation/xhtml+xml 具有更高的优先级。)

    如果您选择其中之一,但更喜欢完整版:
    GET /resource
    Accept: application/xhtml+xml;lite;q=0.1, application/xhtml+xml

    那些没有质量因子的默认为 1.0,因此 0.1 小于 1.0,如果在 lite 版本上可用,您将获得完整版本。

    附加物:

    Accept 上的 q 因子有效地用于显示客户端的偏好。它用于确定客户端接受的媒体类型列表的优先级。它说“我可以处理这些媒体类型,但我更喜欢 a 而 b 而不是 c”。

    JPEG 与 PNG 与精简版与完整版没有什么不同。 JPEG 看起来像原始 PNG 的事实是一种错觉,数据大不相同,它们有不同的用途。 JPEG 不是“低质量”,而是不同的数据。这是“缺失的领域”。如果我想要图像大小,JPEG 将像 PNG 一样为我提供该信息。在这种情况下,它的质量足以完成任务。如果它不足够,那么我不应该要求它。

    我可以保证,如果我的客户端只能处理 PNG 并要求处理 JPEG,那么该程序将无法与它“同样好地工作”。如果我的儿子想要鸡手指,而我给他菠菜奶油,就会出现问题,即使这两者都是资源/晚餐的代表。

    “application/xhtml+xml;lite”表示就是——一种表示,它不是资源本身。这就是使用“表示”一词的原因。这些表示都是来自实际资源的简单投影,实际资源是服务器上以某种未定义方式在内部实现的一些虚拟实体。

    有些表述是规范的,有些则不是。

    表示通过媒体类型表现出来,媒体类型通过 Con-neg 和 ACCEPT 头进行处理。如果你不能处理一个代表,那么就不要要求它。

    这是一个反面问题。

    我不知道“媒体播放器”与这个讨论有什么关系。

    关于api - REST API 具有相同的对象,但很轻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7846900/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com