我正在阅读一本Javascript书,其中讨论了Web服务,但我发现很难理解以下句子是使用REST(Representational State Transfer)的一个缺点。
使用REST的最大缺点之一是某些浏览器 仅支持GET和POST方法,而许多防火墙允许 仅通过GET和POST方法。
我真的不明白这是怎么回事。 英语不是我的第一语言,所以可能只是我发现它很难。
有人可以详细说明这个吗?
答案 0 :(得分:4)
REST支持PUT和DELETE方法以及GET和POST - 因此,如果您的应用程序应该在浏览器中运行,那么您将受到限制。
约定是使用GET来检索信息,使用POST来创建新对象/实体,使用PUT来更新现有对象/实体,使用DELETE来删除......
答案 1 :(得分: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和Which HTTP methods match up to which CRUD methods?。
本书提出的问题是Put和Delete可能无法通过防火墙或某些浏览器使用。我不知道这是否是一个有效的问题。我认为今天的互联网基础设施可以很好地处理这些问题。
上面提到的Crud方法Stack Overflow文章包含一个有用的评论:
由于Web浏览器尚不支持PUT和DELETE,因此它是 认为可以通过添加查询字符串参数来“重载POST” 像被POST的URI上的method = PUT或method = DELETE
答案 2 :(得分:1)
这是一个缺点,如果您的应用程序依赖于DELETE或PUT请求,并非每个客户端或网络配置都支持这种情况,这意味着您可能无法部署它(没有解决方法)。
我不确定这是否仍然是一个真正的问题,并且可以通过为无法发出正确的DELETE或PUT的客户端提供一些过滤器重写请求来轻松解决。
答案 3 :(得分:1)
REST Web服务使用HTTP请求方法:POST,GET,DELETE,PUT。 所以这意味着不支持PUT和DELETE HTTP Request方法。这是一个缺点,但有办法通过操纵DTO来解决它。但这意味着您不会遵循完整的REST方法。