Some questions that aren't answered in the article: How do you structure batch operations like creating multiple things? Is the current answer to make N queries and hope you're using http/2? Whats the best practice for media types in a json api? Should every object type have a specific media type or maybe just a normal and error wrapper type? Seems like most of the big tech apis don't actually get more specific than…
OP here. Two approaches:
1. Have a special endpoint (POST /batch) where you send an array or requests [ {method: "", path: "", body: ""} ] and get an array of responses
2. Yes, assume HTTP/2
Based on conversations with teams who've based their API designs on this post, I've previously recommended #1. But it has it's flaws - a request that's dependent on response from another can't be part of the same batch.
Today, I'd say it makes sense to make sure you implement your API with HTTP/2 and reduce per-hit rate limit "costs" for clients connecting with HTTP/2. This way, you're encouraging HTTP/2 adopting for heavy API users.
Note, if you need to batch only on GET, then something like GraphQL is also interesting.