RESTFUL服务中的注意事项

11 篇文章 0 订阅
5 篇文章 0 订阅

1. POST/PUT/PATCH方法的区别

  • POST:新增一个资源,不用携带id
  • PUT:新增或完整的更新一个资源,必须要携带id及所有属性,如果没有传递某项属性,则表示删除该属性的值
  • PATCH:局部的更新一个资源,必须要携带id及需要修改的属性,如果没有传递某项属性,则表示不改变某项属性的值

特别注意:PUT和PATCH特性的不同,在实现上也有很大区别

在这里思考一种场景:我们需要把一个对象中的部分属性置空,同时改变另一些属性的值,并且我们不希望传递整个对象,该怎么办?

  1. 关于PATCH的深入思考,很深刻:
    《在 RESTful API 设计中使用 PATCH 的最佳实践》 ==> 《原文(好像打不开了)》《译文》

    文章的主要思想:给接口中的每一个参数都配一个字段,用来表示该参数需要进行操作是:新增值,覆盖原值,合并原值,还是删除原值等等。如下图所示,图标来自原文。
    PATCH 的最佳实践

  2. 我的一点思考,为了应对上述场景,可以对接口进行设计:

    • 当某个字段为null时(即没有传递该字段),表示忽略该字段(即不改变原值);
    • 当某个字段为空(空字符串)时,表示将该字段置null(即删除原值);
    • 当某个字段不为空时,表示修改该字段。
    • 但是,这样也有问题,接口的所有参数都只能先设为字符串类型,然后在用的时候再进行转换。
    • 另一个问题是,这样一来,想把某个字符串类型的属性保存为空字符串就不可能了,对于一些数据库中有的字符串类型的特殊属性而言,null和空字符串都有意义,都有用。
  3. 小结:强行实现这种场景,实际上是对现有的PATCH语义进行了扩充,以实现一种灵活的更新资源的方法。但是我们知道灵活度和复杂度是同生兄弟。灵活度的越高,实现起来越复杂。所以,遵守现有的语义也是一个不错的选择。如果想要对资源进行复杂的跟新操作用PUT,如果只是想简单的更新一些属性用PATCH。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RESTful API是一种基于HTTP协议的Web API,它通过HTTP请求与服务器进行通信,实现客户端和服务端之间的交互。RESTful API的设计理念包括资源、动作和状态三个方面,它通过URL定位资源,通过HTTP方法实现对资源的操作,通过HTTP状态码返回操作结果。 下面是一些RESTful API的注意事项: 1. 合理设计URL:RESTful API的URL应该清晰、简洁、易于理解,并且应该使用名词来表示资源,使用动词来表示操作。 2. 使用HTTP方法:RESTful API应该使用HTTP方法来实现对资源的操作,例如使用GET方法获取资源、使用POST方法创建资源、使用PUT方法更新资源、使用DELETE方法删除资源。 3. 返回合适的HTTP状态码:RESTful API应该返回合适的HTTP状态码来表示操作的结果,例如200表示成功、201表示创建成功、204表示删除成功、400表示请求错误、401表示未授权、404表示资源不存在等。 4. 使用标准数据格式:RESTful API应该使用标准的数据格式来表示响应数据,例如JSON或XML格式。 5. 跨域访问限制:由于浏览器出于安全考虑会限制跨域访问,因此RESTful API需要考虑跨域访问限制的问题,例如可以使用CORS(跨域资源共享)来解决跨域问题。 6. 安全性:RESTful API应该考虑安全性问题,例如使用HTTPS协议来加密数据传输、使用身份验证来保护API的访问权限等。 总之,RESTful API的设计需要考虑多方面的因素,包括资源、动作、状态、URL设计、HTTP方法、HTTP状态码、数据格式、跨域访问限制和安全性等,以实现一个高效、安全、易用的API服务

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值