Upcoming Changes to DecAPI
DecAPI has now moved to the updated backend. Everything below now applies to main decapi.me
domain as well as the beta.decapi.me
domain.
For most of you, this will mean nothing. If you’re using this with a bot, such as the ones mentioned in my “Custom APIs” blog post, you’re most likely safe. Although if you are a developer using this manually in your code for whatever reason, there are a few gotchas that you might have to keep in mind.
These changes are in relation to the rewrite of the backend code, which has also been open-sourced here: Decicus/DecAPI.
What will change?
Requests over HTTPS (this means TLS 1.x) will be required. Any requests done over HTTP will receive a 301 Moved Permanently to the equivalent HTTPS address.- Edit (2017-01-13): I decided to remove this change. HTTPS will still be supported and encouraged, but it is not enforced.
- Because of certain code changes, requests done to endpoints that may not exist due to oversight will do a 302 Found redirect to `https://old.decapi.me` as the base URL, which may also redirect you once again to a 404 if it doesn't exist at all.
- This has been done in case there are endpoints that aren't supported in the rewrite, but still reside in the old code.
- Endpoints will now have explicitly set HTTP methods, such as GET.
- Not very many do this, but if you for whatever reason use POST on most of the current DecAPI endpoints, you're doing it wrong (of course there are some exceptions).
- In addition to HTTP/1.1, it will also support HTTP/2.
- This isn't actually a new change, as the current code (as of a few months ago) also supports HTTP/2, but I thought it would be worth mentioning for those of you that like to experiment.
- Some endpoints will now be rate-limited. I never thought I would have to apply this at any point, but I've noticed usage past my original intentions. You can see the rate limits in the GitHub repo.
Okay, so what else would I need to change?
In theory: Not much.
The rewrite has been written in such a way that old URLs should still work, so for example the “latest tweet” endpoint will have four different paths:
- /twitter/latest.php?user=decicus
- /twitter/latest?user=decicus
- /twitter/latest/decicus
- /twitter/latest.php/decicus
The latter two are new additions, but they’re added to be consistent with the new endpoints and to make the URLs “cleaner”.
All other URLs that have similar formats follow this layout and all of them should give the same result regardless of what format you decide to use.
When will this happen?
The short answer is: I don’t know.
DecAPI has been under a rewrite for quite some time, but I’m writing this blog post in advance to give other developers ‘plenty’ of time to make sure everything works.
At the very earliest, these changes will occur April 1st, 2017. This should give you roughly 3 months to make the appropriate changes (if necessary). Odds are most of you won’t even need this long, but some of you might be late to seeing this at any point… if at all.
I will make sure to post on my Twitter page some time in advance before I push this live.
How can I test this?
You can use all the endpoints under https://beta.decapi.me
before (and after) this goes fully live under the base decapi.me
domain.
What if I realize the new code doesn't support my usage?
If for whatever reason the new code doesn’t support any of the features you’re utilizing, then please feel free to contact me at any time using the details on my contact page and we’ll see what I can do on my end.
In the meantime, all the old URLs should work fine if you use old.decapi.me
instead of decapi.me
(or www.decapi.me
).
However, I do recommend you doing whatever you can to change your code so it supports it. Especially if you’re expecting a reliable service. :)
I have a question!
Cool! Use one of the methods listed on my contact page to send me a message and I’ll reply as soon as I have time.