rest - RESTful Web 服务中的 GET、POST 和 PUT 有什么区别
问题描述
一位面试官问我这样的回答
GET 请求可以被缓存 GET 请求保留在浏览器历史中 GET 请求可以被添加书签 GET 请求不应该在处理敏感数据时使用 GET 请求有长度限制 GET 请求只用于请求数据(不能修改)
POST 请求永远不会被缓存 POST 请求不会保留在浏览器历史记录中 POST 请求不能被添加书签 POST 请求对数据长度没有限制
POST 和 PUT 的区别在于 PUT 请求是幂等的。也就是说,多次调用同一个 PUT 请求总是会产生相同的结果。相反,重复调用 POST 请求会产生多次创建相同资源的副作用。
但是最后他没有接受我的回答。并说我不接受 HTTP 方法。他需要这个方法的restful方法定义。
所以我的问题是它与 HTTP 方法和 Rest 方法有何不同???
解决方案
但是最后他没有接受我的回答。并说我不接受 HTTP 方法。他需要这个方法的restful方法定义。
你的面试官可能正在寻找类似于Rails 路由约定的东西:
GET 用于获取项目或集合
POST 用于在集合中创建新项目
PUT 用于更新项目
对我来说,这听起来像是你的面试官实际上并不了解 REST。不幸的是,当你想赢得工作时,以与面试官不同的方式理解问题并不是一个有用的地方。
它与 HTTP 方法和 Rest 方法有何不同?
如果我们要非常小心和精确,我们会说 REST 没有方法。REST 是一种架构风格;HTTP 是使用这种风格设计的应用程序协议。
REST 表示将有自包含的请求消息,并且这些接口的语义将被所有资源统一理解。
HTTP 表示方法标记是请求语义的主要来源,并定义了 GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE 的语义。它还定义了一个可以引入新方法标记(例如:PATCH)的过程。
推荐阅读
- vue.js - 为什么 Gridsome 在 dist 构建中使用 Vue?
- javascript - [Vue 警告]:未知的自定义元素:
- json - 有没有办法根据查询参数在响应中包含多个 json 文件?
- android - 如何在kodein中使用带有两个参数的工厂绑定来恢复对象?
- c++ - 迭代器执行时对迭代器对象的引用发生变化
- vbscript - 经典 ASP 应用程序的 iis 日志中记录了 500 错误
- python - 在地理坐标处查找平均值
- nginx - NGINX 多个 SSL 证书,具有一个 ip、不同的根和域
- spring - ThreadPoolExecutor 和 Spring Async
- java - 如何在属性文件中定义对象数组并从 Java 程序中读取