热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

定义新的HTTP方法:HTTPSEARCH

如果要进行复杂的数据检索,发送大量数据但不更改服务器状态怎么办?现在,您有两个主要选择:使用GET,然后将所需的所有参数压缩到URL或标头中使用POST,并将请求视为不安全且不



如果要进行复杂的数据检索,发送大量数据但不更改服务器状态怎么办?
现在,您有两个主要选择:

  • 使用GET,然后将所需的所有参数压缩到URL或标头中
  • 使用POST,并将请求视为不安全且不可缓存

这些都不是一个好的选择。

HTTP SEARCH是一种提议的新HTTP方法,旨在解决此问题。
SEARCH请求是可以包含正文的安全(不更改目标资源)请求,我们可以清晰地发送复杂的数据查询,而无需将其编码为URL或使用POST请求。
请注意,这仍然只是标准草案。详细信息可能会更改,甚至名称仍未100%固定(该草案被正式命名为“带有主体的安全方法”,而不是引用SEARCH,以便于更改)。
顺带一提,但是到2021年3月,它已经成为IETF HTTP正式采用的规范草案,因此,如果一切顺利的话,它将朝着最终标准化的方向走。
使用SEARCH的原始HTTP / 1.1请求可能看起来像这样:

SEARCH /customers HTTP/1.1
Host: example.com
Content-Type: application/sql
SELECT username, email
WHERE DATEDIFF(DAY, GETDATE(), signup_date) > 7



目前,规范尚未将此查询的结果定义为可缓存。原因尚不完全清楚,但是我怀疑这是因为当今的缓存技术从来没有考虑到主体,而开始这样做将是一个重大的变化,需要进行仔细的思考和咨询。
好处:

  • 请求主体清晰易读且易于管理-无需特殊编码或长度限制
  • 语义很明确:它只是查询数据
  • 您现在可以在同一URL上自由使用GET,SEARCH和POST的独立语义

您可以使用它来支持任何喜欢的语言(从GraphQL到SQL到OData)的复杂查询。当然,服务器需要了解您所使用的查询语言,并且您应该在请求的Content-Type标头中清楚地指出格式,以使其成为可能。
这对于GraphQL尤其有趣。GraphQL当前完全属于上述陷阱,支持GET请求或POST请求,但在两种情况下都存在一些尴尬的警告。转向SEARCH以处理只读GraphQL请求将显着改善UX,并且可以使GraphQL更好地与内置HTTP功能集成,例如将来进行缓存。
 
除了SEARCH之外,该规范还定义了Accept-Search标头。可以将其用于类似这样的响应中:

HTTP/1.1 200 OK

Accept-Search: application/sql, application/graphql



这允许服务器通告它接受SEARCH请求,并用信号通知它将接受的特定查询格式。这类似于现有的Accept-Patch标头。



 


推荐阅读
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 配置Windows操作系统以确保DAW(数字音频工作站)硬件和软件的高效运行可能是一个复杂且令人沮丧的过程。本文提供了一系列专业建议,帮助你优化Windows系统,确保录音和音频处理的流畅性。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 探讨了如何解决Ajax请求响应时间过长的问题。本文分析了一个从服务器获取少量数据的Ajax请求,尽管服务器已经对JSON响应进行了缓存,但实际响应时间仍然不稳定。 ... [详细]
  • This pull request introduces the ability to provide comprehensive paragraph configurations directly within the Create Note and Create Paragraph REST endpoints, reducing the need for additional configuration calls. ... [详细]
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • 本文介绍如何使用 Angular 6 的 HttpClient 模块来获取 HTTP 响应头,包括代码示例和常见问题的解决方案。 ... [详细]
  • 探讨如何正确使用 Fetch API 进行参数传递,分析不同写法的差异及解决方案。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 深入理解Lucene搜索机制
    本文旨在帮助读者全面掌握Lucene搜索的编写步骤、核心API及其应用。通过详细解析Lucene的基本查询和查询解析器的使用方法,结合架构图和代码示例,带领读者深入了解Lucene搜索的工作流程。 ... [详细]
  • 传统|同类_Spring Boot进阶:原理实战与面试题分析读后感
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了SpringBoot进阶:原理实战与面试题分析读后感相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
清洁剂没看见家门口_200
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有