我正在构建restful API URL以获取产品数据。我有,
POST /products
GET /products
GET /products/{:id}
DELETE /products/{:id}
要求之一是提供端点以获取JSON中的产品数据,以便导出为不同的文件格式,CSV和PDF。它将由其他服务(出口服务)调用。
回复示例:
for PDF
{
products_pdf: {
title: 'Products',
sub_title: 'as per May 20 2018',
products: [
{
name: 'product A',
},
{
name: 'product B',
}
]
}
}
表示CSV,比PDF更简单。根据要求,两者都不能在一个响应中提供。
{
products_csv: [
{
name: 'product A',
},
{
name: 'product B'
}
]
}
它的适当的restful URL端点是什么?
我想是
GET /products/exports/{:file_format}
GET /products/exports/csv
GET /products/exports/pdf
答案 0 :(得分:2)
旧的Google财经API提供了各种格式的历史数据。可以通过查询字符串参数output
的不同参数请求这些格式。
例如:
http://www.google.com/finance/historical?q=GOOGL&output=csv
您可以设计端点来处理参数,并根据指定的输出参数以格式返回响应。如果提供的输出类型无效,请选择最适合您特定数据的默认值。
答案 1 :(得分:2)
对我来说,数据的格式是可选,因此不应该指示资源端点。对我来说,最合乎逻辑的解决方案是使用默认格式并使用查询字符串参数来覆盖例如。
GET /products?format={pdf|csv}
答案 2 :(得分:1)
IMO,在网址中使用 exports 这个词看起来不太好。端点可以在URL扩展名中包含响应类型。
前:
/products.json
/products.xml
/products.pdf
/products.csv
如果你不喜欢这种模式,你可以很好地使用Accept HTTP header。