How many HTTP verbs are there?

Registry

The HTTP 1.1 spec defines an Hypertext Transfer Protocol (HTTP) Method Registry. As of 2017-01, shows 39 entries:

  • ACL
  • BASELINE-CONTROL
  • BIND
  • CHECKIN
  • CHECKOUT
  • CONNECT
  • COPY
  • DELETE
  • GET
  • HEAD
  • LABEL
  • LINK
  • LOCK
  • MERGE
  • MKACTIVITY
  • MKCALENDAR
  • MKCOL
  • MKREDIRECTREF
  • MKWORKSPACE
  • MOVE
  • OPTIONS
  • ORDERPATCH
  • PATCH
  • POST
  • PRI
  • PROPFIND
  • PROPPATCH
  • PUT
  • REBIND
  • REPORT
  • SEARCH
  • TRACE
  • UNBIND
  • UNCHECKOUT
  • UNLINK
  • UNLOCK
  • UPDATE
  • UPDATEREDIRECTREF
  • VERSION-CONTROL

HTTP 1.0

HTTP 1.0 defined three methods (“verbs”):

  • GET
    … retrieve whatever information … is identified by the Request-URI…
  • POST
    … to request that the destination server accept the entity enclosed in the request as a new subordinate of the resource identified by the Request-URI in the Request-Line… Posting a message to a bulletin board, newsgroup, mailing list … Providing a block of data … Extending a database through an append operation …
  • HEAD
    … identical to GET except that the server MUST NOT return a message-body in the response … for obtaining metainformation about the entity implied by the request without transferring the entity-body itself…

HTTP 1.1

HTTP 1.1 is officially defined in RFC 2068. This spec added five more methods.

  • OPTIONS
    …a request for information about the communication options available on the request/response chain… determine the options and/or requirements associated with a resource, or the capabilities of a server, without implying a resource action or initiating a resource retrieval
  • PUT
    …requests that the enclosed entity be stored under the supplied Request-URI. If … already existing resource, the enclosed entity SHOULD be considered as a modified version of the one residing on the origin server…
  • DELETE
    …delete the resource identified by the Request-URI…
  • TRACE
    …loop- back of the request message…
  • CONNECT
    …for use with a proxy that can dynamically switch to being a tunnel (e.g. SSL tunneling…

HTTP Extensions

Other protocols extend HTTP to define additional methods/verbs.

  • PATCH
  • Applies partial modifications to a resource
  • Defined by RFC 5789
  • WebDAV specifies seven more methods:
  • PROPFIND
  • PROPPATCH
  • MKCOL
  • COPY
  • MOVE
  • LOCK
  • UNLOCK

HTTP/2

HTTP/2 is defined in RFC 7540. Section 3.5 defines a PRI method.

  • PRI
    In HTTP/2, each endpoint is required to send a connection preface as a final confirmation of the protocol in use and to establish the initial settings for the HTTP/2 connection. … the connection preface starts with the string "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n") …

Prognostication

will this ever change?

Not likely.

Given the wide use of Web RPC and SOAP, and now the rising popularity of RESTful services bringing new life to the existing basic verbs, there is little need to devise new verbs at the HTTP level. Where people need their own domain-specific meaningful verbs, they can embed within the message being delivered via HTTP.

I expect we’ll not see more HTTP methods become popular any time soon.


See the spec:

"Additional methods, outside the scope of this specification, have been standardized for use in HTTP. All such methods ought to be registered within the "Hypertext Transfer Protocol (HTTP) Method Registry" maintained by IANA, as defined in Section 8.1." -- https://greenbytes.de/tech/webdav/rfc7231.html#rfc.section.4.1.p.7>

And the IANA registry contains many more.