draft-ietf-httpbis-safe-method-w-body-06.txt | draft-ietf-httpbis-safe-method-w-body-latest.txt | |||
---|---|---|---|---|
HTTP Working Group J. Reschke | HTTP Working Group J. Reschke | |||
Internet-Draft greenbytes | Internet-Draft greenbytes | |||
Intended status: Standards Track A. Malhotra | Intended status: Standards Track A. Malhotra | |||
Expires: April 24, 2025 | Expires: May 1, 2025 | |||
J.M. Snell | J.M. Snell | |||
M. Bishop | M. Bishop | |||
Akamai | Akamai | |||
October 21, 2024 | October 28, 2024 | |||
The HTTP QUERY Method | The HTTP QUERY Method | |||
draft-ietf-httpbis-safe-method-w-body-06 | draft-ietf-httpbis-safe-method-w-body-latest | |||
Abstract | Abstract | |||
This specification defines a new HTTP method, QUERY, as a safe, | This specification defines a new HTTP method, QUERY, as a safe, | |||
idempotent request method that can carry request content. | idempotent request method that can carry request content. | |||
Editorial Note | Editorial Note | |||
This note is to be removed before publishing as an RFC. | This note is to be removed before publishing as an RFC. | |||
Discussion of this draft takes place on the HTTP working group | Discussion of this draft takes place on the HTTP working group | |||
mailing list (ietf-http-wg@w3.org), which is archived at | mailing list (ietf-http-wg@w3.org), which is archived at | |||
<https://lists.w3.org/Archives/Public/ietf-http-wg/>. | <https://lists.w3.org/Archives/Public/ietf-http-wg/>. | |||
Working Group information can be found at <https://httpwg.org/>; | Working Group information can be found at <https://httpwg.org/>; | |||
source code and issues list for this draft can be found at | source code and issues list for this draft can be found at | |||
<https://github.com/httpwg/http-extensions/labels/query-method>. | <https://github.com/httpwg/http-extensions/labels/query-method>. | |||
The changes in this draft are summarized in Appendix A.6. | The changes in this draft are summarized in Appendix A.7. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on April 24, 2025. | This Internet-Draft will expire on May 1, 2025. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2024 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
skipping to change at page 2, line 48 ¶ | skipping to change at page 2, line 48 ¶ | |||
6.1. Registration of QUERY method . . . . . . . . . . . . . . 10 | 6.1. Registration of QUERY method . . . . . . . . . . . . . . 10 | |||
6.2. Registration of Accept-Query field . . . . . . . . . . . 10 | 6.2. Registration of Accept-Query field . . . . . . . . . . . 10 | |||
7. Normative References . . . . . . . . . . . . . . . . . . . . 11 | 7. Normative References . . . . . . . . . . . . . . . . . . . . 11 | |||
Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 11 | Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 11 | |||
A.1. Since draft-ietf-httpbis-safe-method-w-body-00 . . . . . 11 | A.1. Since draft-ietf-httpbis-safe-method-w-body-00 . . . . . 11 | |||
A.2. Since draft-ietf-httpbis-safe-method-w-body-01 . . . . . 12 | A.2. Since draft-ietf-httpbis-safe-method-w-body-01 . . . . . 12 | |||
A.3. Since draft-ietf-httpbis-safe-method-w-body-02 . . . . . 12 | A.3. Since draft-ietf-httpbis-safe-method-w-body-02 . . . . . 12 | |||
A.4. Since draft-ietf-httpbis-safe-method-w-body-03 . . . . . 12 | A.4. Since draft-ietf-httpbis-safe-method-w-body-03 . . . . . 12 | |||
A.5. Since draft-ietf-httpbis-safe-method-w-body-04 . . . . . 12 | A.5. Since draft-ietf-httpbis-safe-method-w-body-04 . . . . . 12 | |||
A.6. Since draft-ietf-httpbis-safe-method-w-body-05 . . . . . 13 | A.6. Since draft-ietf-httpbis-safe-method-w-body-05 . . . . . 13 | |||
A.7. Since draft-ietf-httpbis-safe-method-w-body-06 . . . . . 13 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
1. Introduction | 1. Introduction | |||
This specification defines the HTTP QUERY request method as a means | This specification defines the HTTP QUERY request method as a means | |||
of making a safe, idempotent request that contains content. | of making a safe, idempotent request that contains content. | |||
Most often, this is desirable when the data conveyed in a request is | Most often, this is desirable when the data conveyed in a request is | |||
too voluminous to be encoded into the request's URI. For example, | too voluminous to be encoded into the request's URI. For example, | |||
while this is an common and interoperable query: | this is a common query pattern: | |||
GET /feed?q=foo&limit=10&sort=-published HTTP/1.1 | GET /feed?q=foo&limit=10&sort=-published HTTP/1.1 | |||
Host: example.org | Host: example.org | |||
if the query parameters extend to several kilobytes or more of data | However, for a query with parameters that are complex or large in | |||
it may not be, because many implementations place limits on their | size, encoding it in the request URI may not be the best option | |||
size. Often these limits are not known or discoverable ahead of | because | |||
time, because a request can pass through many uncoordinated systems. | ||||
Additionally, expressing certain kinds of data in the target URI is | ||||
inefficient, because it needs to be encoded to be a valid URI. | ||||
Encoding query parameters directly into the request URI also | o often size limits are not known ahead of time because a request | |||
effectively casts every possible combination of query inputs as | can pass through many uncoordinated system, | |||
distinct resources. Depending on the application, that may not be | ||||
desirable. | o expressing certain kinds of data in the target URI is inefficient | |||
because of the overhead of encoding that data into a valid URI, | ||||
and | ||||
o encoding query parameters directly into the request URI | ||||
effectively casts every possible combination of query inputs as | ||||
distinct resources. | ||||
As an alternative to using GET, many implementations make use of the | As an alternative to using GET, many implementations make use of the | |||
HTTP POST method to perform queries, as illustrated in the example | HTTP POST method to perform queries, as illustrated in the example | |||
below. In this case, the input parameters to the query operation are | below. In this case, the input parameters to the query operation are | |||
passed along within the request content as opposed to using the | passed along within the request content as opposed to using the | |||
request URI. | request URI. | |||
A typical use of HTTP POST for requesting a query: | A typical use of HTTP POST for requesting a query: | |||
POST /feed HTTP/1.1 | POST /feed HTTP/1.1 | |||
skipping to change at page 13, line 25 ¶ | skipping to change at page 13, line 25 ¶ | |||
o Add QUERY example to introduction (<https://github.com/httpwg/ | o Add QUERY example to introduction (<https://github.com/httpwg/ | |||
http-extensions/issues/2171>) | http-extensions/issues/2171>) | |||
o Update "Sensitive information in QUERY URLs" | o Update "Sensitive information in QUERY URLs" | |||
(<https://github.com/httpwg/http-extensions/issues/2853>) | (<https://github.com/httpwg/http-extensions/issues/2853>) | |||
o Field registration for "Accept-Query" (<https://github.com/httpwg/ | o Field registration for "Accept-Query" (<https://github.com/httpwg/ | |||
http-extensions/issues/2903>) | http-extensions/issues/2903>) | |||
A.7. Since draft-ietf-httpbis-safe-method-w-body-06 | ||||
o Editorial changes to Introduction (ack Will Hawkins, | ||||
<https://github.com/httpwg/http-extensions/pull/2859>) | ||||
Authors' Addresses | Authors' Addresses | |||
Julian Reschke | Julian Reschke | |||
greenbytes GmbH | greenbytes GmbH | |||
Hafenweg 16 | Hafenweg 16 | |||
48155 Münster | 48155 Münster | |||
Germany | Germany | |||
Email: julian.reschke@greenbytes.de | Email: julian.reschke@greenbytes.de | |||
URI: https://greenbytes.de/tech/webdav/ | URI: https://greenbytes.de/tech/webdav/ | |||
End of changes. 10 change blocks. | ||||
16 lines changed or deleted | 25 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |