当前位置:首页 > 科技  > 软件

HTTP QUERY method,前端传SQL不再是笑话

来源: 责编: 时间:2024-06-11 17:49:50 86观看
导读上周笔者在 github 冲浪的时候发现了这样一个 issues!说起 HTTP method 大家最熟悉的就是 GET 和 POST,今天我们一起来聊聊这个 HTTP QUERY method。图片一、介绍HTTP QUERY 请求方法,这是一种安全、幂等的请求方式,它可

上周笔者在 github 冲浪的时候发现了这样一个 issues!说起 HTTP method 大家最熟悉的就是 GET 和 POST,今天我们一起来聊聊这个 HTTP QUERY method。JeT28资讯网——每日最新资讯28at.com

图片图片JeT28资讯网——每日最新资讯28at.com

一、介绍

HTTP QUERY 请求方法,这是一种安全、幂等的请求方式,它可包含请求内容。 GET 请求中传达的数据量过大,无法编码到请求的 URI 中时,通常需要使用 QUERY 方法。例如,虽然下面的查询是常见且可互操作的:JeT28资讯网——每日最新资讯28at.com

GET /feed?q=foo&limit=10&sort=-published HTTP/1.1Host: example.org

但如果查询参数扩展到几千字节或更多,可能就不行了,因为许多实现对它们的大小有限制。作为使用GET的替代方案,许多实现使用 HTTP POST 方法执行查询,如下例所示。在这种情况下,搜索操作的输入参数在请求有效载荷中传递,而不是使用请求URI。JeT28资讯网——每日最新资讯28at.com

一个典型的使用HTTP POST进行请求的示例:

POST /feed HTTP/1.1Host: example.orgContent-Type: application/x-www-form-urlencodedq=foo&limit=10&sort=-published

然而,这种变化与GET一样,存在同样的基本限制,即在没有特定知识的情况下,不容易明显地看出正在执行安全、幂等的查询。JeT28资讯网——每日最新资讯28at.com

QUERY方法提供了一个介于使用GET和POST之间的解决方案。与POST一样,查询操作的输入在请求的有效载荷中传递,而不是作为请求URI的一部分。然而,与POST不同,该方法明确是安全的和幂等的,允许缓存和自动重试等功能正常工作。JeT28资讯网——每日最新资讯28at.com

二、QUERY method

QUERY方法用于启动服务器端查询。与HTTP GET方法不同,GET方法请求服务器返回由目标URI标识的资源的表示,QUERY方法用于请求服务器对有效请求URI范围内的某些数据集执行查询操作(由请求有效载荷描述)。对QUERY的响应返回的有效载荷不能假定是有效请求URI标识的资源的表示。JeT28资讯网——每日最新资讯28at.com

请求的有效载荷定义了查询。实现可以使用任何具有适当查询语义的内容类型与QUERY方法。JeT28资讯网——每日最新资讯28at.com

QUERY请求对于请求URI标识的资源是安全和幂等的。也就是说,QUERY请求不会改变目标资源的状态。然而,在处理QUERY请求时,可以预期服务器将分配计算和内存资源,甚至可能创建额外的HTTP资源,通过这些资源可以检索响应。JeT28资讯网——每日最新资讯28at.com

对QUERY请求的成功响应预计将提供有关操作最终结果的某些指示。例如,一个成功的查询如果没有结果,可以用204 No Content响应来表示。如果响应包括内容,预计它将描述操作的结果。在某些情况下,服务器可能选择通过返回一个带有Location头字段的3xx重定向来间接响应QUERY请求,指定一个替代的请求URI,可以使用HTTP GET请求从该URI检索结果。第4节展示了各种非规范的成功QUERY响应示例。JeT28资讯网——每日最新资讯28at.com

如果请求消息包括If-Modified-Since、If-Unmodified-Since、If-Match、If-None-Match或If-Range头字段,则QUERY方法的语义变为“条件QUERY”。条件QUERY请求仅在条件头字段(们)描述的情况下执行查询。然而,需要注意的是,这些条件是针对目标资源本身的状态进行评估,而不是搜索操作收集的结果。JeT28资讯网——每日最新资讯28at.com

2.1. 缓存

QUERY方法的响应是可以缓存的;缓存可以根据 HTTP-CACHING 使用它来满足随后的QUERY请求。JeT28资讯网——每日最新资讯28at.com

查询的缓存键必须包含请求内容。在这样做时,缓存应首先规范化请求内容,以去除语义上不重要的差异,从而提高缓存效率:JeT28资讯网——每日最新资讯28at.com

  • 移除内容编码
  • 根据请求的Content-Type字段中的任何媒体类型后缀(例如,“+json”)基于格式约定进行规范化
  • 根据请求的Content-Type字段指示的内容本身的语义进行规范化

请注意,任何此类规范化仅用于生成缓存键;它不会更改请求本身。JeT28资讯网——每日最新资讯28at.com

2.2. “Accept-Query”头字段

“Accept-Query”响应头字段可以由服务器使用,以直接信号支持QUERY方法,同时识别可以使用的特定查询格式媒体类型。JeT28资讯网——每日最新资讯28at.com

Accept-Query = 1#media-type

Accept-Query头字段指定了由[RFCHTTP]第8.3.1节定义的媒体类型(及可选参数)的逗号分隔列表。JeT28资讯网——每日最新资讯28at.com

Accept-Query头字段列出的类型顺序无关紧要。JeT28资讯网——每日最新资讯28at.com

三、 示例

本节中的非规范示例使用基于SQL的简单、假设的纯文本查询语法,并以逗号分隔值的形式返回结果。这只是为了说明目的。实现可以在请求和响应中自由使用任何格式。JeT28资讯网——每日最新资讯28at.com

3.1. 直接响应的简单QUERY

具有直接响应的简单查询:JeT28资讯网——每日最新资讯28at.com

QUERY /contacts HTTP/1.1Host: example.orgContent-Type: example/queryAccept: text/csvselect surname, givenname, email limit 10

响应:JeT28资讯网——每日最新资讯28at.com

HTTP/1.1 200 OKContent-Type: text/csvsurname, givenname, emailSmith, John, john.smith@example.orgJones, Sally, sally.jones@example.comDubois, Camille, camille.dubois@example.net

3.2. 间接响应的简单QUERY(303 See Other)

具有间接响应(303 See Other)的简单查询:JeT28资讯网——每日最新资讯28at.com

QUERY /contacts HTTP/1.1Host: example.orgContent-Type: example/queryAccept: text/csvselect surname, givenname, email limit 10

响应:JeT28资讯网——每日最新资讯28at.com

HTTP/1.1 303 See OtherLocation: http://example.org/contacts/query123

获取查询响应:JeT28资讯网——每日最新资讯28at.com

GET /contacts/query123 HTTP/1.1Host: example.org

响应:JeT28资讯网——每日最新资讯28at.com

HTTP/1.1 200 OKContent-Type: text/csvsurname, givenname, emailSmith, John, john.smith@example.orgJones, Sally, sally.jones@example.comDubois, Camille, camille.dubois@example.net

五、总结

HTTP QUERY method 是个非常不错的提案,期待各个 http 服务端和客户端能够早日实现,服务端数据请求接口再也不用去纠结该使用 GET 还是 POST。对于示例中 QUERY 方法的类 sql 传参,笔者认为可能不会这样实现。但是还是比较期待能有数据库厂商能够提供类 http QUERY 的 sql api。JeT28资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-93084-0.htmlHTTP QUERY method,前端传SQL不再是笑话

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 使用 Spring Boot 结合断点续传技术和自动重连机制实现考试系统网络不稳定性的应对策略

下一篇: React Query 是做什么的?你知道吗?

标签:
  • 热门焦点
  • Mate60手机壳曝光 致敬自己的经典设计

    Mate60手机壳曝光 致敬自己的经典设计

    8月3日消息,今天下午博主数码闲聊站带来了华为Mate60的第三方手机壳图,可以让我们在真机发布之前看看这款华为全新旗舰的大致轮廓。从曝光的图片看,Mate 60背后摄像头面积依然
  • 石头自清洁扫拖机器人G10S评测:多年黑科技集大成之作 懒人终极福音

    石头自清洁扫拖机器人G10S评测:多年黑科技集大成之作 懒人终极福音

    科技圈经常能看到一个词叫“缝合怪”,用来形容那些把好多功能或者外观结合在一起的产品,通常这样的词是贬义词,但如果真的是产品缝合的好、缝合的实用的话,那它就成了中性词,今
  • 把LangChain跑起来的三个方法

    把LangChain跑起来的三个方法

    使用LangChain开发LLM应用时,需要机器进行GLM部署,好多同学第一步就被劝退了,那么如何绕过这个步骤先学习LLM模型的应用,对Langchain进行快速上手?本片讲解3个把LangChain跑起来
  • K8S | Service服务发现

    K8S | Service服务发现

    一、背景在微服务架构中,这里以开发环境「Dev」为基础来描述,在K8S集群中通常会开放:路由网关、注册中心、配置中心等相关服务,可以被集群外部访问;图片对于测试「Tes」环境或者
  • SpringBoot中使用Cache提升接口性能详解

    SpringBoot中使用Cache提升接口性能详解

    环境:springboot2.3.12.RELEASE + JSR107 + Ehcache + JPASpring 框架从 3.1 开始,对 Spring 应用程序提供了透明式添加缓存的支持。和事务支持一样,抽象缓存允许一致地使用各
  • Flowable工作流引擎的科普与实践

    Flowable工作流引擎的科普与实践

    一.引言当我们在日常工作和业务中需要进行各种审批流程时,可能会面临一系列技术和业务上的挑战。手动处理这些审批流程可能会导致开发成本的增加以及业务复杂度的上升。在这
  • 三言两语说透柯里化和反柯里化

    三言两语说透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是两种很有用的技术,可以帮助我们写出更加优雅、泛用的函数。本文将首先介绍柯里化和反柯里化的概念、实现原理和应用
  • 小米MIX Fold 3下月亮相:今年唯一无短板的全能折叠屏

    小米MIX Fold 3下月亮相:今年唯一无短板的全能折叠屏

    这段时间以来,包括三星、一加、荣耀等等有不少品牌旗下的最新折叠屏旗舰都有新的进展,其中荣耀、三星都已陆续发布了最新的折叠屏旗舰,尤其号荣耀Magi
  • 8月见!小米MIX Fold 3获得3C认证:支持67W快充

    8月见!小米MIX Fold 3获得3C认证:支持67W快充

    这段时间以来,包括三星、一加、荣耀等等有不少品牌旗下的最新折叠屏旗舰都得到了不少爆料,而小米新一代折叠屏旗舰——小米MIX Fold 3此前也屡屡被传
Top
Baidu
map