This is because PUT
requests don’t have body parameters, that’s not how PUT
works. PUT
doesn’t quite do what you thought it did, and can only be used to upload a file from a client.
Your endpoint is incompatible with PUT
as a request type because you’re providing parameters as key value pairs, and that is not possible with PUT
:
According to the HTML standard, you can not. The only valid values for the method attribute are get and post, corresponding to the GET and POST HTTP methods. is invalid HTML and will be treated like , i.e. send a GET request.
Likewise:
XHTML 1.x forms only support GET and POST. GET and POST are the only allowed values for the “method” attribute.
- https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-method
- https://stackoverflow.com/questions/8054165/using-put-method-in-html-form
As for WordPress, it doesn’t handle PUT
and treats it as an alias of POST
along with PATCH
, so while its handling is technically correct, it’s only by accident.
Now this doesn’t prevent PHP from using it as a file upload mechanism, but that is the only thing it can be used for:
https://www.php.net/manual/en/features.file-upload.put-method.php