9

我正在阅读一本关于 Web 服务的 Javascript 书籍,但我发现很难将以下句子理解为使用 REST(代表性状态转移)的一个缺点。

使用 REST 的最大缺点之一是一些浏览器只支持 GET 和 POST 方法,而许多防火墙只允许通过 GET 和 POST 方法。

我真的不明白这如何被视为一个缺点。英语不是我的第一语言,所以可能只是我觉得很难。

有人可以详细说明一下吗?

4

4 回答 4

3

REST 支持 PUT 和 DELETE 方法以及 GET 和 POST - 因此,如果您的应用程序应该在浏览器中运行,那么您将受到限制。

约定是使用 GET 检索信息,使用 POST 创建新对象/实体,使用 PUT 更新现有对象/实体,使用 DELETE 删除...

于 2013-07-25T01:51:18.720 回答
2

Restful Web 服务通常使用 Http 规范中定义的许多方法。所以,Create 方法使用 Http Post,Read 方法使用 Http Get,Update 方法使用 Http Put,Delete 方法使用 Http Delete。请参阅http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html哪些 HTTP 方法与哪些 CRUD 方法匹配?.

书中提出的问题是 Put 和 Delete 可能无法通过防火墙或在某些浏览器中使用。我不知道这是否是一个有效的担忧。我认为今天的互联网基础设施可以很好地处理这些事情。

上面提到的 Crud 方法 Stack Overflow 文章包含一个有用的评论:

由于 Web 浏览器尚不支持 PUT 和 DELETE,因此可以通过在 POST 的 URI 上添加诸如 method=PUT 或 method=DELETE 之类的查询字符串参数来“重载 POST”

于 2013-07-25T01:56:08.017 回答
1

这是一个缺点,如果您的应用程序依赖于 DELETE 或 PUT 请求,则并非每个客户端或网络配置都支持它,这意味着您可能无法部署它(没有变通方法)。

不过,我不确定这是否仍然是一个真正的问题,并且可以通过对无法发出正确 DELETE 或 PUT 的客户端进行一些过滤器重写请求来轻松解决。

于 2013-07-25T01:51:42.847 回答
1

REST Web 服务使用 HTTP 请求方法:POST、GET、DELETE、PUT。所以这意味着不支持 PUT 和 DELETE HTTP 请求方法。这是一个缺点,但有一些方法可以通过操纵 DTO 来解决它。然而,这意味着您没有遵循完整的 REST 方法。

于 2013-07-25T01:52:13.540 回答