以下是我正在尝试创建的CRUD Web服务中的事件序列
步骤1:用户请求POST / shape / trycreate(尝试创建请求)
步骤2:Controller方法接收对象:tryCreate(Shape s)
第3步:服务方法返回匹配的形状:Collection<Shape> tryCreate(Shape s)
步骤4:如果存在重复形状,则抛出一些异常,ExceptionMapper返回失败响应
如果返回的集合为空,则创建Shape并返回SUCCESS响应
否则,如果返回包含路径的对象,以查看与用户尝试创建的形状匹配的形状,并且返回对象还包含仍然创建Shape的继续路径
所以基本上响应对象包含像view / Shape / id001 view / Shape / id003 view / Shape / id007这样的路径,它们就像用户即将创建的Shape一样,并且还有一个 continue path 创建/形状/一些令牌
我认为我可以使用某些令牌 - &gt;在服务器端形成对象映射,其中条目存在5分钟左右。 通过使用这个我可以验证用户没有发送直接请求来创建,但它已经完成了步骤tryCreate-&gt; View Matching Shapes-&gt;仍然创造 此外,它不必再次在tryCreate请求中发送的创建请求中发送Shape的详细信息。
现在问题是在服务器端使用过期缓存来存储经过验证的令牌并不是一个Restful设计。 Q1)**我应该如何确保这不是创建的直接请求,它遵循trycreate请求 ** Q2)我是否在创建请求中重新发送Shape的详细信息,否则我该如何实现?
由于