Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Restful API URL,用于获取不同文件类型格式的json数据_Rest_Api Design - Fatal编程技术网

Restful API URL,用于获取不同文件类型格式的json数据

Restful API URL,用于获取不同文件类型格式的json数据,rest,api-design,Rest,Api Design,我正在构建restful API URL以获取产品数据。所以我有 POST /products GET /products GET /products/{:id} DELETE /products/{:id} 其中一个需求是提供端点,以获取JSON格式的产品数据,并将其导出为不同的文件格式(CSV和PDF)。它将由其他服务(导出服务)调用 答复示例: PDF格式 { products_pdf: { title: 'Products', sub_title: 'as p

我正在构建restful API URL以获取产品数据。所以我有

POST /products
GET /products
GET /products/{:id}
DELETE /products/{:id}
其中一个需求是提供端点,以获取JSON格式的产品数据,并将其导出为不同的文件格式(CSV和PDF)。它将由其他服务(导出服务)调用

答复示例:

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

旧的Google Finance API以多种格式提供历史数据。可以通过查询字符串参数
输出的不同参数请求这些格式

例如:

http://www.google.com/finance/historical?q=GOOGL&output=csv


您可以设计端点来处理参数,并根据指定的输出参数以某种格式返回响应。如果提供的输出类型无效,请选择最适合您的特定数据的默认值。

旧的Google Finance API以多种格式提供历史数据。可以通过查询字符串参数
输出的不同参数请求这些格式

例如:

http://www.google.com/finance/historical?q=GOOGL&output=csv


您可以设计端点来处理参数,并根据指定的输出参数以某种格式返回响应。如果提供的输出类型无效,请选择最适合您的特定数据的默认输出类型。

对于我来说,数据的格式是可选的,因此不应指定资源端点。对我来说,最合理的解决方案是使用默认格式,并使用查询字符串参数来覆盖,例如

GET /products?format={pdf|csv}

对我来说,数据的格式是可选的,因此不应指定资源端点。对我来说,最合理的解决方案是使用默认格式,并使用查询字符串参数来覆盖,例如

GET /products?format={pdf|csv}

在我看来,在URL中使用“导出”这个词看起来不太好。端点可以在url扩展中具有响应类型

例:


如果您不喜欢这种模式,您可以很好地使用。

IMO,在URL中使用“导出”一词看起来不太好。端点可以在url扩展中具有响应类型

例:


如果您不喜欢此模式,可以很好地使用。

如何在端点方法定义上方的代码中编写此模式?您需要在值对象类字段中添加什么注释来说明CSV?如何在端点方法定义上方的代码中编写该注释?您需要在值对象类字段中添加什么注释来说明CSV?