当服务器收到多余的不需要的数据时,REST API响应

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当服务器收到多余的不需要的数据时,REST API响应相关的知识,希望对你有一定的参考价值。

在实施REST API时,将对服务器接收到的请求主体进行验证。

如果不需要(以及未在REST API规范中指定的某些额外信息)以JSON属性的形式出现并且在验证期间找到,该怎么办?在这种情况下,服务器应该怎么做?忽略多余的数据并发送响应,通常首选成功还是错误响应?

如果在这种情况下HTTP error status最兼容时错误响应最适合?

下面是一个例子:


    "data": 
        "type": "user",
        "attributes": 
            "firstName": "Kazi Mahbubur",
            "lastName": "Rahman",
            "age": 30,
            "x": "x",
            "y": "y",
            "z": "z",
        
    

在以上请求正文(JSON类型)中,根据REST API规范,不需要x,y,z属性。

答案

在这种情况下,服务器应该做什么?忽略多余的数据并发送响应,通常首选成功还是错误响应?

您将研究XML的现有技术,尤其是must-ignore之类的概念。

简短版本:您需要考虑当版本1客户端尝试与版本2服务器通信时,或者当版本2客户端尝试与版本1服务器通信时(又称为前进和后退),想要发生的情况兼容性)。

例如,万维网已经发展了三十年;这样做在很大程度上是因为标准(HTTP,html,URI)已被限制以支持兼容性的方式发展。

例如,快速阅读Roy Fielding关于Host的文章>

早期HTTP设计中最严重的错误之一就是决定不发送作为请求消息目标的完整URI...。

现在考虑:Fielding在20年前发表了这篇文章,我们仍然没有改变它的工作方式

。 HTTP消息在大多数情况下具有与1996年发布RFC 1945时相同的语义。

如果在这种情况下HTTP错误状态最兼容时错误响应最适合?

[If

,您决定不允许使用无法识别的架构,那么您将希望选择能够准确反映该架构的元数据。

[RFC 4918,它定义了422 Unprocessable Entity的语义,包括一个很好的决策树]

422(不可处理实体)状态代码表示服务器理解请求实体的内容类型(因此415(不支持的媒体类型)状态代码不合适),并且请求实体的语法正确(因此400(错误的请求)状态代码不合适),但无法处理其中的指令。例如,如果XML请求正文包含格式正确(即,语法正确)但语义上错误的XML指令,则可能会发生此错误情况。

以上是关于当服务器收到多余的不需要的数据时,REST API响应的主要内容,如果未能解决你的问题,请参考以下文章

使用授权防止用户访问 REST API 中的不相关数据

使用基本授权(用户名和密码)时出现 VSTS REST API 错误

使用授权可防止用户访问REST API中的不相关数据

使用 Paypal REST API 时需要 API 证书

GCP IAM REST API 服务帐号密钥问题

使用 JSON 服务器创建 REST API 的问题