如何为放置向导应用程序组织REST端点?

如何为放置向导应用程序组织REST端点?,rest,dropwizard,hateoas,Rest,Dropwizard,Hateoas,我是个新手,不知道该怎么做 我的示例应用程序是一个订单查看系统。目前,我正在开发一个功能,其中UI页面由一组订单搜索条件、搜索按钮和链接组成,用于将搜索结果下载为CSV。下载链接仅在成功搜索后显示。应用程序必须将搜索结果写入CSV文件,返回的文件位置将用于下载文件 我需要帮助组织这方面的端点 最初,我想到了一个端点GET-/orders-text/JSON,搜索条件作为查询参数传入。但是,由于我将为每个GET请求实际创建CSV,我想知道我是否违反了GET的HATEOAS rest约束(不应创建资

我是个新手,不知道该怎么做

我的示例应用程序是一个订单查看系统。目前,我正在开发一个功能,其中UI页面由一组订单搜索条件、搜索按钮和链接组成,用于将搜索结果下载为CSV。下载链接仅在成功搜索后显示。应用程序必须将搜索结果写入CSV文件,返回的文件位置将用于下载文件

我需要帮助组织这方面的端点

最初,我想到了一个端点
GET
-
/orders
-
text/JSON
,搜索条件作为查询参数传入。但是,由于我将为每个GET请求实际创建CSV,我想知道我是否违反了GET的HATEOAS rest约束(不应创建资源)。或者,由于实际的资源是Order而不是CSV,所以端点作为GET可以吗

或者,我是否需要多个端点遵守REST约束和约定,并相互交互以生成所需的结果? 比如:

1.
POST
-
/orders/csv
-
text/json
(文件名):创建订单的csv文件并返回文件名的json

2.
GET
/orders/csv/
:获取要下载的文件


非常感谢您的帮助。

HATEOAS只是客户可以在返回的响应中使用的进一步链接。这些链接只描述了资源当前状态下允许的操作。通过GET请求创建新文件是完全不同的。通常这可以与HTML页面上的搜索表单相比较,HTML页面上的搜索表单通常作为POST请求发送到服务器以解决您的实际问题:这可以通过一个端点(
/search/orders
f.e)来解决,您可以在该端点向服务器发送包含搜索标准的POST请求。这将触发服务器上的CSV创建。服务器将201创建的响应发送回包含指向资源(也可能是新内容)的位置报头的客户端;如果处理需要更多时间,还可以返回带有位置标题的
202接受的
返回代码。然后,客户端可以使用location标头中返回的URI来检索内容(inf尚未返回)