Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest 如何告知客户端不支持该数据类型_Rest_Http Headers - Fatal编程技术网

Rest 如何告知客户端不支持该数据类型

Rest 如何告知客户端不支持该数据类型,rest,http-headers,Rest,Http Headers,在编写RESTful API时,我偶然发现了一个问题。 如果客户端以API不支持的格式发布/放置某些数据,服务器应如何通知客户端 例如:客户以QueryString格式发布了一些数据 fieldA=foo&fieldB=bar 但服务器只接受JSON,因此数据应按如下方式发布: {"fieldA": "foo", "fieldB": "bar"} 目前,我正在发送415状态代码PHP代码: header("HTTP/1.1 415 Unsupported Media Type", t

在编写RESTful API时,我偶然发现了一个问题。 如果客户端以API不支持的格式发布/放置某些数据,服务器应如何通知客户端

例如:客户以QueryString格式发布了一些数据

fieldA=foo&fieldB=bar
但服务器只接受JSON,因此数据应按如下方式发布:

{"fieldA": "foo", "fieldB": "bar"}
目前,我正在发送415状态代码PHP代码:

header("HTTP/1.1 415 Unsupported Media Type", true, 415);
但这并没有告诉客户端API接受/使用哪种媒体类型。 此外,这是否足以或正确的方式使请求失败

问题是,在RESTful API中,告诉客户机发送到服务器的数据是不受支持的媒体类型的最佳方式是什么,以及服务器如何告诉客户机支持/期望什么

PS:我正在用PHP编写这个应用程序,但我感兴趣的是行为,而不是实际的实现。
因为逻辑在任何地方都是相同的,所以欢迎使用任何语言进行响应。

首先,您需要区分这两种类型的错误:

400错误请求-与以下不同: 415不支持的媒体类型 当发送具有不支持的媒体类型的请求时,应返回415。由于没有指示端点接受何种媒体类型的标头,并且需要精确的信息,因此可能会在响应正文中返回详细的消息。简而言之,返回415,其中包含支持XML和JSON的消息。在大多数框架中,可以捕获并包装返回的错误。请记住,只需始终以相同的格式返回错误消息,以便使用者可以轻松地解析它

当请求以有效的JSON格式发送,但单个字段作为字符串实例发送,并且要求为整数时,400应返回详细消息


希望这对您有所帮助。

如果是415,服务器是否应该返回任何标头以告知预期的媒体类型?如果不是,服务器是否应该在响应内容中发送此信息?这封邮件有什么标准或格式吗?没有。正如我在回答中所写的那样。这种信息很容易在体内传递。没有这样的格式。您可以介绍own,但正如我所写的,对所有错误消息保持一致。您可以介绍own,但正如我所写的,对所有错误消息保持一致。完美的谢谢D