假设我有一个RESTful、超文本驱动的服务,模拟了一家冰淇淋店。为了更好地管理我的店铺,我想要能够显示每种冰淇淋销售数量和价值的日报表。
看起来这个报告功能可以作为 DailyReport 资源公开。DailyReport 可以快速生成,似乎没有任何实际存储报告在服务器上的优势。我只需要某些天的 DailyReport,其他天我不关心获取 DailyReport。此外,在服务器上存储 DailyReport 会使客户端实现复杂化,它们需要记住删除不再需要的报告。
DailyReport 是瞬时的;它的表示只能检索一次。一种实现方式是提供一个链接 "/daily-reports",对其进行POST将返回包含当天销售信息的 DailyReport 表示的响应。
编辑:还假设我真的想要进行 POST 请求。DailyReport 有许多不同的选项,例如按字母顺序排列冰淇淋类型、按价值排列、包括小时细分或可选择包括当天温度或过滤掉某些冰淇淋类型(作为列表)。与使用 GET 的查询参数不同,我宁愿使用带有适当选项的 DailyReport 表示进行 POST(使用定义良好的自定义媒体类型来记录每个选项)。我得到的表示将显示我的选项以及报告本身。
这是正确思考该问题的方法吗?如果正确,实现 DailyReport 资源时可能需要考虑哪些特殊因素?(例如,在进行 POST 请求后返回时设置 Location header 可能不合适)。
看起来这个报告功能可以作为 DailyReport 资源公开。DailyReport 可以快速生成,似乎没有任何实际存储报告在服务器上的优势。我只需要某些天的 DailyReport,其他天我不关心获取 DailyReport。此外,在服务器上存储 DailyReport 会使客户端实现复杂化,它们需要记住删除不再需要的报告。
DailyReport 是瞬时的;它的表示只能检索一次。一种实现方式是提供一个链接 "/daily-reports",对其进行POST将返回包含当天销售信息的 DailyReport 表示的响应。
编辑:还假设我真的想要进行 POST 请求。DailyReport 有许多不同的选项,例如按字母顺序排列冰淇淋类型、按价值排列、包括小时细分或可选择包括当天温度或过滤掉某些冰淇淋类型(作为列表)。与使用 GET 的查询参数不同,我宁愿使用带有适当选项的 DailyReport 表示进行 POST(使用定义良好的自定义媒体类型来记录每个选项)。我得到的表示将显示我的选项以及报告本身。
这是正确思考该问题的方法吗?如果正确,实现 DailyReport 资源时可能需要考虑哪些特殊因素?(例如,在进行 POST 请求后返回时设置 Location header 可能不合适)。