I’m taking a moment here to explain something that confused the hell out of me when I was getting into the JSON API. In short, I was confused about what POST meant in the JSON API.
POST vs GET
The official documentation mentions this:
Want to get your site’s posts? Simply send a
GET
request to/wp-json/wp/v2/posts
. Update user with ID 4? Send aPOST
request to/wp-json/wp/v2/users/4
. Get all posts with the search term “awesome”? GET/wp-json/wp/v2/posts?search=awesome
. It’s that easy.
From that I inferred that if I was updated content on my site, I would use a POST call. Otherwise, I’m always going to be using GET to get data. Makes sense. If you want to get the data on a specific post, you do a get for /wp-json/wp/v2/posts/1234
and get that post’s data. Store the JSON output as a parameter in your plugin, let’s say, and Bob’s your father’s brother’s husband.
I was wrong.
Alexa Posts
When I started working with Alexa I was confounded. It told me it sent a POST
request to my site. I stared at that for a while. I’d been assuming that when I asked Alexa something, I’d be able to tell it to do a GET
request from /wp-json/MYAPP/v1/MYSKILL/parameter
. After all, I’m not posting data.
But then I thought about it a little bit more. A straightforward GET
request gets data from a URL without interaction. A POST
posts data to a site, and you decide what to do with it. Most of the time when we think of a POST
action happening, we think of updating data.
POST doesn’t have to mean update
A POST
is just sending data to your JSON API. It posts to your site.
That’s why passing the WP_REST_Request $request
data to your function gives you magical access to the request data. And from that we can grab all the data Alexa requests send to your site, which lets us parse the data and make decisions on our replies.
Now like I said before, what you do with the POST is up to you. But that explains a lot about why Amazon is so picky about making sure a request came legit from them. Especially since you can order stuff from Amazon…
“Hey Alexa, can you tell TV shows to stop killing off queer characters?”