我有一个在 Google App Engine 上运行的 RESTful Web 服务,并使用 JPA 将实体存储在 GAE 数据存储中。
使用 POST 请求创建新实体(因为服务器将生成实体 ID)。
但是,我不确定返回的最佳状态代码,因为 GAE DS 最终是一致的。我考虑了以下几点:
- 200 OK:RFC 声明响应正文应包含“描述或包含操作结果的实体”。这是可以实现的,因为实体在持久化到 DS 时会使用其生成的 ID 进行更新,因此可以立即序列化并返回更新的实体。但是,随后按 ID 对该实体的 GET 请求可能会失败,因为所有节点可能尚未达到一致性(这已被视为我的客户端应用程序的现实问题)。
- 201 Created:如上所述,如果尚未达到一致性,则返回新实体的 URI 可能会导致客户端出现问题。
- 202 Accepted:将消除上述问题,但无法将新实体的 ID 通知客户端。
在这种情况下,什么被认为是最佳实践?