实现将数据导出到文件的 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 指定文件类型。

RFC 2616 states:

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.