实现将数据导出到文件的 Http API 方法的正确方法
Correct way to implement Http API method for exporting data to file
我正在实施一个 API 方法,该方法允许将一些数据导出到文件中。文件的格式由方法的调用者选择。
API 方法目前有一个 URI-form 像这样: /customers/{customerId}/shoppingchart/export/{fileTypeId}
但是 "correct" Http-way 是什么,如果有的话,来实现文件类型选择?选择应该由 Http Accept header 或 URI 或其他方式指定吗?而且,如果不支持请求的格式,return 的正确状态是什么?
我同意 HTTP Accept header 指定文件类型。
The Accept request-header field can be used to specify certain media types which are acceptable for the response.
然而,这并不表示您是否可以创建自己的自定义类型(如果您希望的话)。
The HTTProtocol 将 Accept header 描述为:
This field contains a semicolon-separated list of representation schemes (Content-Type metainformation values) which will be accepted in the response to this request.
上面的link则正好指向了一个Content-Type的定义。这里重要的是
The x-
convention for experimental types is of course still available as well.
这告诉我们可以在 Accept header 中定义我们自己的自定义类型,前提是我们在它们前面加上 x-
(例如 x-ext
用于 .ext
文件)在 HTTP 协议中很常见。
What is the correct status to return if the asked format isn't supported?
我认为 HTTP 415 - 不受支持的媒体类型 在第 10.4.16 节中定义在这里是合适的。
The server is refusing to service the request because the entity of the request is in a format not supported by the requested resource for the requested method.
我正在实施一个 API 方法,该方法允许将一些数据导出到文件中。文件的格式由方法的调用者选择。
API 方法目前有一个 URI-form 像这样: /customers/{customerId}/shoppingchart/export/{fileTypeId}
但是 "correct" Http-way 是什么,如果有的话,来实现文件类型选择?选择应该由 Http Accept header 或 URI 或其他方式指定吗?而且,如果不支持请求的格式,return 的正确状态是什么?
我同意 HTTP Accept header 指定文件类型。
The Accept request-header field can be used to specify certain media types which are acceptable for the response.
然而,这并不表示您是否可以创建自己的自定义类型(如果您希望的话)。
The HTTProtocol 将 Accept header 描述为:
This field contains a semicolon-separated list of representation schemes (Content-Type metainformation values) which will be accepted in the response to this request.
上面的link则正好指向了一个Content-Type的定义。这里重要的是
The
x-
convention for experimental types is of course still available as well.
这告诉我们可以在 Accept header 中定义我们自己的自定义类型,前提是我们在它们前面加上 x-
(例如 x-ext
用于 .ext
文件)在 HTTP 协议中很常见。
What is the correct status to return if the asked format isn't supported?
我认为 HTTP 415 - 不受支持的媒体类型 在第 10.4.16 节中定义在这里是合适的。
The server is refusing to service the request because the entity of the request is in a format not supported by the requested resource for the requested method.