{"id":80,"date":"2026-07-11T15:09:55","date_gmt":"2026-07-11T15:09:55","guid":{"rendered":"https:\/\/blog.csfree.org\/?p=80"},"modified":"2026-07-12T08:04:33","modified_gmt":"2026-07-12T08:04:33","slug":"https-new-tool-everything-you-need-to-know-about-query","status":"publish","type":"post","link":"https:\/\/blog.csfree.org\/index.php\/2026\/07\/11\/https-new-tool-everything-you-need-to-know-about-query\/","title":{"rendered":"HTTP\u2019s New Tool: Everything You Need to Know About QUERY"},"content":{"rendered":"\n<h2 class=\"wp-block-heading has-text-align-center\">HTTP\u2019s New Tool: Everything You Need to Know About QUERY<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What is HTTP?<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>HTTP<\/strong> or more commonly <strong>Hypertext Transfer Protocol<\/strong>, is one of the fundamental protocol of <strong>WWW <\/strong>(World Wide Web). It is the link through which the web browsers (ex: chrome, safari) communicates with web servers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Whenever you type a URL (Uniform Resource Locator) into your address bar, click a link, or submit a form, <strong>HTTP <\/strong>is exactly what, which runs behind the scenes to fetch the data you have requested.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>How does it exactly work?<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Suppose, the client (suppose, it\u2019s you), with the help of your browser, send an <strong>HTTP request<\/strong>, to any server, where that particular web app is hosted!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The server hosting the website processes that request and sends back an <strong>HTTP Response<\/strong> containing the requested data (like HTML, CSS, images, or JSON data) along with a status code (like the famous <strong>404 Not Found<\/strong> or <strong>500 Internal Sever<\/strong> <strong>Error<\/strong>)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(<strong>Note<\/strong>: A <strong>HTTP<\/strong> request doesn\u2019t retain memories from previous requests. Every request are brand new interactions, though we may use cookies or sessions to retain the \u2018logged-in\u2019 status of a client.)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">but now another question arises,<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What exactly is a HTTP request?<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">An <strong>HTTP Request <\/strong>is a formatted message sent by a client (like your web browser) to a server to ask for a specific resource, like an HTML page, an image, or data from an API. It may give you success, or some error code, pertaining to the then condition of the webpage or app you\u2019re accessing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>HTTP<\/strong> defines a set of\u00a0<strong>request methods<\/strong>,\u00a0to indicate the purpose of the request and what is expected if the request is successful. Although they can also be nouns, these request methods are sometimes referred to as\u00a0<strong><em>HTTP<\/em><\/strong><em> <strong>verbs<\/strong><\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Each request method has its own semantics, but some characteristics are shared across multiple methods, specifically request methods can be <strong>Safe<\/strong>, <strong>Idempotent <\/strong>or <strong>Cacheable<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">These properties, best described are:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Safe <\/strong>: A method is considered safe if it <strong>does not alter the state of the server<\/strong>. In plain terms, a safe request is &#8220;read-only.&#8221; It fetches data but doesn&#8217;t create, modify, or delete anything on the database.<\/li>\n\n\n\n<li><strong>Idempotent<\/strong>: A method is idempotent if making the exact same request <strong>multiple times yields the same result<\/strong> and leaves the server in the same state as making it just once. If a network glitch causes your browser to send the request twice, an idempotent method ensures nothing breaks.<\/li>\n\n\n\n<li><strong>Cacheable:<\/strong> A response is cacheable if a browser or a Content Delivery Network (CDN) is allowed to <strong>save a copy of the response<\/strong> locally. This prevents making unnecessary trips back to the server for data that hasn&#8217;t changed.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What are the general request methods we observe?<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Among a vast variety of <strong>HTTP request methods<\/strong>, we are only going to see the most useful ones to developers:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>GET Method: <\/strong>The\u00a0<strong>GET\u00a0HTTP<\/strong> <strong>method<\/strong> requests a representation of the specified resource. Requests using\u00a0<strong>GET\u00a0<\/strong>should only be used to request data and shouldn&#8217;t contain a body. It is <strong>SAFE<\/strong>, <strong>IDEMPOTENT<\/strong> and <strong>CACHEABLE<\/strong>.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Syntax:<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>GET &lt;request-target&gt;&#91;\"?\"&lt;query&gt;] HTTP\/1.1<\/strong><\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Examples:<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The following\u00a0<strong>GET\u00a0<\/strong>request asks for the resource at\u00a0<strong>example.com\/contact<\/strong>:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>GET \/contact HTTP\/1.1\nHost: example.com\nUser-Agent: curl\/8.6.0\nAccept: *\/*<\/strong><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The server sends back the resource with a <strong>200<\/strong> <strong>OK<\/strong>\u00a0status code, indicating success:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>HTTP\/1.1 200 OK\nContent-Type: text\/html; charset=UTF-8\nDate: Fri, 21 Jun 2024 14:18:33 GMT\nLast-Modified: Thu, 17 Oct 2019 07:18:26 GMT\nContent-Length: 1234\n\n&lt;!doctype html>\n&lt;!-- HTML content follows --><\/strong><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">   <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>PUT Method: \u00a0<\/strong>The\u00a0<strong>PUT\u00a0HTTP method<\/strong> creates a new resource or replaces a representation of the target resource with the request content. It is neither <strong>SAFE<\/strong> nor <strong>CACHEABLE<\/strong>, but it is <strong>IDEMPOTENT<\/strong>.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Syntax: <\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>PUT &lt;request-target>&#91;\"?\"&lt;query>] HTTP\/1.1<\/strong><\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Examples:<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The following\u00a0<strong>PUT<\/strong>\u00a0<strong>request<\/strong> asks to create a resource at\u00a0<strong>example.com\/new.html\u00a0<\/strong>with the content\u00a0<em><strong>&lt;p>New File&lt;\/p><\/strong><\/em>:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>PUT \/new.html HTTP\/1.1\nHost: example.com\nContent-type: text\/html\nContent-length: 16\n\n&lt;p>New File&lt;\/p><\/strong><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If the target resource\u00a0<strong>does not<\/strong>\u00a0have a current representation and the\u00a0<strong>PUT<\/strong>\u00a0<strong>request<\/strong> successfully creates one, then the origin server must send a <strong>201<\/strong> <strong>Created<\/strong> <strong>response.<\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>HTTP\/1.1 201 Created\nContent-Location: \/new.html<\/strong><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>POST Method: <\/strong>The\u00a0<strong>POST\u00a0HTTP<\/strong> <strong>method<\/strong> sends data to the server. The type of the body of the request is indicated by Content-type\u00a0header. The difference between\u00a0<strong>PUT<\/strong>\u00a0and\u00a0<strong>POST<\/strong>\u00a0is that,\u00a0<strong>PUT<\/strong>\u00a0is <strong>IDEMPOTENT<\/strong>. <\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">(<strong>Note<\/strong>: Successive identical\u00a0<strong>POST<\/strong>\u00a0<strong>requests<\/strong> may have additional effects, such as creating the same order several times.)<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Syntax:<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>POST &lt;request-target>&#91;\"?\"&lt;query>] HTTP\/1.1<\/strong><\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Examples:<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A form using\u00a0<em><strong>application\/x-www-form-urlencoded<\/strong><\/em>\u00a0content encoding (the default) sends a request where the body contains the form data in\u00a0<strong>key=value<\/strong>\u00a0pairs, with each pair separated by an\u00a0<strong>&amp;\u00a0<\/strong>symbol, as shown below:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>POST \/test HTTP\/1.1\nHost: example.com\nContent-Type: application\/x-www-form-urlencoded\nContent-Length: 27\n\nfield1=value1&amp;field2=value2<\/strong><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The\u00a0<strong><em>multipart\/form-data<\/em>\u00a0<\/strong>encoding is used when a form includes files or a lot of data. This request body delineates each part of the form using a boundary string. An example of a request in this format:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>POST \/test HTTP\/1.1\nHost: example.com\nContent-Type: multipart\/form-data;boundary=\"delimiter12345\"\n\n--delimiter12345\nContent-Disposition: form-data; name=\"field1\"\n\nvalue1\n--delimiter12345\nContent-Disposition: form-data; name=\"field2\"; filename=\"example.txt\"\n\nvalue2\n--delimiter12345--<\/strong><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To be fair, all these <strong>HTTP<\/strong> <strong>request<\/strong> <strong>methods<\/strong> are <strong>NOT <\/strong>quite efficient, for what exactly they are made to do, developers still did use, due to lack of a better attribute.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Some of the <strong>disadvantages <\/strong>include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>The GET Limitation:<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a0While <strong>GET <\/strong>is structurally built for fetching data, it forces you to pack all your parameters directly into the URL string. This creates a <strong>messy chain of text <\/strong>that quickly hits strict browser and server character limits (usually around 8 KB). Worse yet, pasting complex data into a URL means <strong>sensitive search filters are exposed<\/strong> in plain text across browser histories, security logs, and analytics tools.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>The POST Abuse:<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">To bypass these <strong>restrictive <\/strong>URL length limits, developers started &#8220;abusing&#8221; <strong>POST <\/strong>requests purely to query data. While <strong>POST <\/strong>handles large request bodies with <strong>ease<\/strong>, it signals to web servers that a resource is being <strong><em>created<\/em> <\/strong>or <strong><em>modified<\/em><\/strong>. This structural lie breaks the web, browsers refuse to automatically retry failed requests, and CDNs completely disable caching, forcing your servers to process the exact same heavy search queries over and over again.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Such are the reasons, why The <strong>IETF <\/strong>introduced the standardized <strong>HTTP QUERY method <\/strong>(<strong>RFC<\/strong> <strong>10008<\/strong>) to solve a decades-old dilemma in web development.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What is an HTTP QUERY method?<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The <strong>HTTP QUERY<\/strong> method is a new <strong>HTTP request <\/strong>verb officially standardized by the <strong>IETF <\/strong>(Internet Engineering Task Force) under <strong>RFC 10008<\/strong>. It is a <strong>SAFE<\/strong>, <strong>IDEMPOTENT<\/strong>, and <strong>CACHEABLE <\/strong>read request that carries its parameters inside a request body.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>How does QUERY helps in rectifying the \u2018GET\u2019 or \u2018POST\u2019 method?<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Caching Complex Payloads<\/strong> :<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Traditional web architecture uses <strong>Content Delivery Networks (CDNs)<\/strong> to cache data by using the URL path as a lookup key for <strong>GET requests<\/strong>. However, when complex filters require a <strong>POST request<\/strong>, CDNs bypass caching entirely to avoid interrupting data-altering state changes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The introduction of the <strong>QUERY HTTP method<\/strong> solves this issue for data-heavy applications. It explicitly signals to intermediate networks that a request carries a body but is <strong>100% safe to cache<\/strong>. Modern CDNs can now hash the request body alongside the URL to generate unique <strong>cache keys<\/strong>, preventing repetitive, heavy queries from hitting the main database.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This optimization is a massive win for <strong>dashboard analytics<\/strong> and <strong>AI-powered vector searches<\/strong>. By caching complex request bodies directly at the <strong>network edge<\/strong>, companies can drastically reduce cloud computing costs and slash user latency.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u00a0Network Resiliency &amp; Automatic Retries<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Network drops frequently leave mobile apps vulnerable to incomplete or hung actions. If a connection glitches during a standard <strong>POST search<\/strong>, the browser cannot safely retry the request in the background. Because <strong>POST <\/strong>is <strong>non-idempotent<\/strong>, an automatic retry risks executing unintended duplicate actions on the backend.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The <strong>QUERY method<\/strong> fixes this by guaranteeing <strong>idempotence<\/strong> at the protocol level. Because the server treats <strong>QUERY <\/strong>as a <strong>read-only event<\/strong>, browsers, gateways, and reverse proxies know that re-executing a dropped request will never corrupt data or server state.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For developers, this semantic guarantee provides built-in <strong>network resiliency<\/strong>. If a mobile connection drops while a complex dashboard is loading, the network stack silently and <strong>safely retries the QUERY<\/strong> behind the scenes. The application recovers gracefully without throwing timeout errors or forcing manual refreshes.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Standardizing Advanced API Queries<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">As <strong>API <\/strong>design shifted toward complex systems like <strong>GraphQL, Elasticsearch<\/strong>, and custom <strong>JSON <\/strong>search tools, developers relied on messy architectural compromises to transport raw SQL fragments or logic trees over standard <strong>REST<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The <strong>QUERY method<\/strong> establishes a native, unified home for these advanced data languages. Instead of forcing a GET or POST endpoint to parse unexpected text strings, QUERY allows the client to explicitly declare the exact syntax inside the request payload using standard <strong>media headers<\/strong> (e.g., <code><strong>Content-Type: application\/graphql<\/strong><\/code> or <code><strong>application\/sql<\/strong><\/code>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This standardization allows web infrastructure to instantly route, validate, and parse incoming scripts cleanly, making complex data retrieval a <strong>first-class citizen<\/strong> on the web.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Syntax:<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>QUERY \/endpoint\/path HTTP\/1.1\nHost: api.example.com\nContent-Type: &lt;media-type>\nAccept: &lt;media-type>\n\n&#91;Query Payload \/ Body]<\/strong><\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Examples:<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>JSON-Based Structured Search<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>QUERY \/products\/search HTTP\/1.1\nHost: shop.example.com\nContent-Type: application\/json\nAccept: application\/json\n\n{\n  \"category\": \"shoes\",\n  \"price\": { \"less_than\": 120, \"greater_than\": 50 },\n  \"inStock\": true,\n  \"sort\": &#91;\"-price\", \"popularity\"]\n}<\/strong><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Native GraphQL Queries<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>QUERY \/graphql HTTP\/1.1\nHost: api.example.com\nContent-Type: application\/graphql\nAccept: application\/json\n\nquery GetUserDashboard {\n  user(id: \"usr_9921\") {\n    name\n    email\n    analytics(range: \"last_30_days\") {\n      clicks\n      conversions\n    }\n  }\n}<\/strong><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Native SQL Caching (Internal\/Service-to-Service)<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>QUERY \/db\/query HTTP\/1.1\nHost: internal-data.local\nContent-Type: application\/sql\nAccept: application\/json\n\nSELECT id, name, salary FROM employees WHERE department = 'Engineering' AND status = 'Active' ORDER BY hire_date DESC;<\/strong><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Server Discovery: The <code>Accept-Query<\/code> Header<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>HEAD \/products\/search HTTP\/1.1\nHost: shop.example.com\n\nResponse:\nHTTP\/1.1 200 OK\nAllow: GET, HEAD, OPTIONS, QUERY\nAccept-Query: application\/json, application\/graphql, application\/sql<\/strong><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Note:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Mandatory Content-Type:<\/strong> Unlike <strong>POST<\/strong>, where a server might silently tolerate a missing content header, the <strong>QUERY <\/strong>specification strictly requires it. If you drop Content-Type, the server <em>must<\/em> reject it with a 400 Bad Request or 415 Unsupported Media Type.<\/li>\n\n\n\n<li><strong>Flexible Schemas:<\/strong> It doesn&#8217;t have to be JSON! It perfectly accepts form encodings, graph documents, or text strings.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Wrapping Up<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Understanding <strong>HTTP methods <\/strong>isn&#8217;t just a matter of textbook definitions; it has massive real-world implications for your application&#8217;s speed, cost, and reliability. Moving past the old &#8220;<strong>GET <\/strong>for simple data, <strong>POST <\/strong>for everything else&#8221; mindset opens the door to architectural game-changers like <strong>QUERY<\/strong>. By picking the method that truly aligns with your intent\u2014whether that means leveraging the strict safety of <code><strong>GET<\/strong><\/code>, the state-changing power of <code><strong>POST<\/strong><\/code>, or the idempotent, payload-heavy flexibility of <strong>QUERY<\/strong>, you are designing APIs that are efficient by default. The next time you build an endpoint, don&#8217;t just default to what&#8217;s familiar. Look at the semantics, think about your network edge, and choose the verb that makes your architecture thrive.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>HTTP\u2019s New Tool: Everything You Need to Know About QUERY What is HTTP? HTTP or more commonly Hypertext Transfer Protocol, [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[12],"tags":[20,27,23,29,24,17,30,15,25,21,16,14,33,28,26,22,19,32],"class_list":["post-80","post","type-post","status-publish","format-standard","hentry","category-http","tag-api","tag-apidesign","tag-architecture","tag-caching","tag-cdn","tag-get-methods","tag-graphql","tag-http-requests","tag-httpquery","tag-networking","tag-post-method","tag-query-methods","tag-rfc10008","tag-software-engineering","tag-tech","tag-web-performance","tag-webdev","tag-webstandards"],"_links":{"self":[{"href":"https:\/\/blog.csfree.org\/index.php\/wp-json\/wp\/v2\/posts\/80","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.csfree.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.csfree.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.csfree.org\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.csfree.org\/index.php\/wp-json\/wp\/v2\/comments?post=80"}],"version-history":[{"count":4,"href":"https:\/\/blog.csfree.org\/index.php\/wp-json\/wp\/v2\/posts\/80\/revisions"}],"predecessor-version":[{"id":84,"href":"https:\/\/blog.csfree.org\/index.php\/wp-json\/wp\/v2\/posts\/80\/revisions\/84"}],"wp:attachment":[{"href":"https:\/\/blog.csfree.org\/index.php\/wp-json\/wp\/v2\/media?parent=80"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.csfree.org\/index.php\/wp-json\/wp\/v2\/categories?post=80"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.csfree.org\/index.php\/wp-json\/wp\/v2\/tags?post=80"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}