Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is the HTTP SEARCH method standardized?

I am thinking about how to implement a REST API endpoint for searching. As I see it, I have four options for how to implement search options, each with pros and cons:

  1. Use a GET endpoint with querystring params
  2. Use a GET endpoint with a payload (for example, a JSON payload)
  3. Use a POST endpoint with a payload
  4. Use a SEARCH endpoint with a payload

For completeness, here are the pros and cons I am thinking of:

  • GET endpoint with querystring params
    • Pro - Accurate verb, standards compliant
    • Con - Limited option structure (key/values only), and URL size limit
  • GET endpoint with a payload (for example, a JSON payload)
    • Pro - Accurate verb, no size limit
    • Con - HTTP specs say GET requests do not have meaningful payloads, and some frameworks may not support it (relevant question)
  • POST endpoint with a payload
    • Pro - Standards compliant, no size limit
    • Con - Searching is idempotent, while POSTing is not. Basically, it's the wrong verb.
  • SEARCH endpoint with a payload
    • Pro - Accurate verb, no size limit
    • Con - Is an obscure (non-standard?) HTTP verb

A lengthy, nuanced, and opinionated discussion could be had as to which of these is best, but that discussion is not the purpose of this question. Instead I ask: Is the SEARCH verb merely obscure and rarely used but still an official method, or is it non-standard?

I found this draft for the method, but not many more official documents about it. The draft echoed some of the points of the quadrilemma I posed above. It appears to me that the method is still merely a draft and can't be called "standard", though I am not overly familiar with how to read those documents.

Functionally, I guess my question is: Can I rely on self-touted standards compliant software to handle the SEARCH method? And if they don't handle it, can I appeal to their claim of standards compliance to force them into handling it? Boiled down even further, is it a reliable verb?

like image 529
tschwab Avatar asked Dec 18 '25 22:12

tschwab


1 Answers

Almost, but they may use QUERY instead.

HTTP SEARCH is a new HTTP method, for safe requests that include a request body. It's still early & evolving, but it was recently adopted as an IETF draft standard, and it's going to add some great new tools for HTTP development everywhere.

from httptoolkit blog

  • https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body/
  • https://github.com/httpwg/http-extensions/labels/safe-method-w-body
  • https://httptoolkit.com/blog/http-search-method/
  • https://github.com/nestjs/nest/pull/10533 NextJS v10 support SEARCH method
like image 176
wener Avatar answered Dec 20 '25 18:12

wener