如何告诉客户端数据类型不受支持
How to tell the client that the data type is unsupported
写 RESTful API,我遇到了一个问题。
如果客户端 POST/PUT 一些数据的格式 不被 API 支持,服务器应该如何提醒客户端?
例如: 客户端以 QueryString 格式发布了一些数据
fieldA=foo&fieldB=bar
但是服务器只接受JSON,所以数据应该这样发布:
{"fieldA": "foo", "fieldB": "bar"}
目前,我正在发送 415 状态代码(PHP 代码):
header("HTTP/1.1 415 Unsupported Media Type", true, 415);
但这并没有告诉客户端 API accepts/consumes.
是哪种媒体类型
此外,这是否足够或 正确的方法 来使请求失败?
问题是,在 RESTful API 中,告诉客户端发送到服务器的数据是不受支持的媒体类型的最佳方式是什么,以及服务器如何告诉客户端客户什么是 supported/expected?
PS: 我正在 PHP 中编写此应用程序,但我对行为感兴趣,而不是实际实现。
因为处处都是一样的逻辑,欢迎任何语言的回复。
首先你需要区分这两类错误:
- 400 错误请求 - 不同于:
- 415 不支持的媒体类型
发送不支持媒体类型的请求时,应 return 发送 415。由于没有 header 指示端点接受的媒体类型并且需要精确信息,因此可能会 return 在响应的 body 中编辑详细消息。简而言之,支持 return 415 消息 XML 和 JSON 。在大多数框架中,returned 错误可以被捕获和包装。只记得 always return 相同格式的错误消息,以便消费者可以轻松解析它。
当以有效格式 (JSON) 发送请求时,例如单个字段作为字符串的实例发送,并且必须是整数,400 应该 return 带有详细消息。
希望对你有所帮助。
写 RESTful API,我遇到了一个问题。
如果客户端 POST/PUT 一些数据的格式 不被 API 支持,服务器应该如何提醒客户端?
例如: 客户端以 QueryString 格式发布了一些数据
fieldA=foo&fieldB=bar
但是服务器只接受JSON,所以数据应该这样发布:
{"fieldA": "foo", "fieldB": "bar"}
目前,我正在发送 415 状态代码(PHP 代码):
header("HTTP/1.1 415 Unsupported Media Type", true, 415);
但这并没有告诉客户端 API accepts/consumes.
是哪种媒体类型
此外,这是否足够或 正确的方法 来使请求失败?
问题是,在 RESTful API 中,告诉客户端发送到服务器的数据是不受支持的媒体类型的最佳方式是什么,以及服务器如何告诉客户端客户什么是 supported/expected?
PS: 我正在 PHP 中编写此应用程序,但我对行为感兴趣,而不是实际实现。
因为处处都是一样的逻辑,欢迎任何语言的回复。
首先你需要区分这两类错误:
- 400 错误请求 - 不同于:
- 415 不支持的媒体类型
发送不支持媒体类型的请求时,应 return 发送 415。由于没有 header 指示端点接受的媒体类型并且需要精确信息,因此可能会 return 在响应的 body 中编辑详细消息。简而言之,支持 return 415 消息 XML 和 JSON 。在大多数框架中,returned 错误可以被捕获和包装。只记得 always return 相同格式的错误消息,以便消费者可以轻松解析它。
当以有效格式 (JSON) 发送请求时,例如单个字段作为字符串的实例发送,并且必须是整数,400 应该 return 带有详细消息。
希望对你有所帮助。