22、探索地图与书签服务的设计与实现

探索地图与书签服务的设计与实现

自定义地点资源的特性与问题

自定义地点资源在很多方面与已定义的其他资源类似。它对 GET 请求的响应和内置地点一样,对 PUT(包含键值对表示)和 DELETE(无表示)请求的响应和“用户账户”资源相同。不过,仍有一些特殊情况需要考虑。

当客户端创建自定义地点时,响应代码为 201(“已创建”),这和创建用户的情况相同。但与用户不同的是,地点的名称可以更改,位置也可以移动,比如一艘船从地图上的一个点移动到另一个点,这两种操作都会改变地点的 URI。

如果客户端修改自定义地点但不改变其位置,响应代码为 200(“OK”);若位置改变,响应代码为 301(“永久移动”),并且 Location 头部会包含地点的新 URI,客户端需要更新其数据结构以跟踪新 URI。这涉及到一个争议,即 URI 是包含有用信息更重要,还是永不改变更重要。由于自定义地点的 URI 基于坐标和名称,一旦这些信息改变,旧的 URI 就会失效,这是系统设计的一个重大缺陷。如果要将其作为真正的 Web 服务,可能需要为每个地点提供一个“永久链接”,即不包含可更改资源状态的备用 URI。

以下是可能出现的错误情况及相应的响应代码:
| 错误情况 | 响应代码 | 说明 |
| — | — | — |
| 提供无效的纬度或经度来移动现有地点 | 400(“错误请求”) | 与之前类似情况相同 |
| 创建地点时未提供服务器所需的所有信息 | 400(“错误请求”) | 类似于更改用户密码但未提供新密码的情况 |
| 尝试将一个地点移动到已有同名地点的坐标处 | 409(“冲突”) | 客户端的请求会使系统资源处于不一

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值