正确实现Http API方法导出数据到文件的方法

时间:2015-04-08 14:22:53

标签: http asp.net-web-api asp.net-web-api2

我实现了一种API方法,允许将一些数据导出到文件中。文件的格式由方法的调用者选择。 API方法目前有一个类似于这样的URI形式:/customers/{customerId}/shoppingchart/export/{fileTypeId}但是什么是"正确" Http-way,如果有的话,实现文件类型选择?是应该通过Http Accept标头还是在URI中指定选择还是以其他方式?并且,如果不支持所询问的格式,返回的正确状态是什么?

1 个答案:

答案 0 :(得分:0)

我同意HTTP Accept标头以指定文件类型。

RFC 2616 states

  

Accept request-header字段可用于指定响应可接受的某些媒体类型。

但是,这并不表示您是否可以创建自己的自定义类型(如果您愿意)。

The HTTProtocol描述了一个Accept标头:

  

此字段包含以分号分隔的表示方案列表(Content-Type元信息值),该响应将在此请求的响应中被接受。

然后,上述链接完全指向Content-Type的定义。这里重要的是

  

实验类型的x-约定当然也可用。

这告诉我们,我们可以在Accept标头中定义我们自己的自定义类型,前提是我们在x-前面加上x-ext .ext文件),这在HTTP协议中很常见。

  

如果不支持询问的格式,返回的正确状态是什么?

我认为{strong} 10.4.16中定义的 HTTP 415 - 不支持的媒体类型是合适的。

  

服务器拒绝为请求提供服务,因为请求的实体采用所请求方法所请求资源不支持的格式。