What’s Next

Keep on Learning!

If you liked what you've learned so far, dive in!
Subscribe to get access to this tutorial plus
video, code and script downloads.

Start your All-Access Pass
Buy just this tutorial for $12.00

What’s Next

Awesome work making it this far, seriously! We’ve covered all of the most fundamental parts of REST, and you already know enough to make a really nice API. But probably not enough to win CodeBattles. The key is to think about resources and representations, to test each part of your API, and to do things inside your code that will make your API very consistent. Be aware of the world around you and the rules of REST, but don’t be afraid to carefully bend them to make your API useable.

So what big things haven’t we covered yet? Authentication, Hypermedia and HATEOAS, Documentation, Content-Type negotiation, pagination, custom endpoints and a few other topics. Knowing these topics will go a long way to understanding the rest of the conversation about REST and to help you decide what types of things you want to use in your API, and which things might not be needed.

We’ll cover these in our next episode. Seeya next time!

Leave a comment!

This tutorial uses a deprecated micro-framework called Silex. The fundamentals of REST are still 💯valid, but the code we use can't be used in a real application.

What PHP libraries does this tutorial use?

// composer.json
    "require": {
        "silex/silex": "~1.0", // v1.3.2
        "symfony/twig-bridge": "~2.1", // v2.7.3
        "symfony/security": "~2.4", // v2.7.3
        "doctrine/dbal": "^2.5.4", // v2.5.4
        "monolog/monolog": "~1.7.0", // 1.7.0
        "symfony/validator": "~2.4", // v2.7.3
        "symfony/expression-language": "~2.4" // v2.7.3
    "require-dev": {
        "behat/mink": "~1.5", // v1.5.0
        "behat/mink-goutte-driver": "~1.0.9", // v1.0.9
        "behat/mink-selenium2-driver": "~1.1.1", // v1.1.1
        "behat/behat": "~2.5", // v2.5.5
        "behat/mink-extension": "~1.2.0", // v1.2.0
        "phpunit/phpunit": "~5.7.0", // 5.7.27
        "guzzle/guzzle": "~3.7" // v3.9.3