One of the most common tasks Laravel developers are given is to create an API, usually JSON and REST or REST-like, that allows third parties to interact with the Laravel application’s data.
Laravel makes it incredibly easy to work with JSON, and its resource controllers are already structured around REST verbs and patterns. In this chapter we’ll learn about some basic API-writing concepts, the tools Laravel provides for writing APIs, and some external tools and organizational systems you’ll want to consider when writing your first Laravel API.
Representational State Transfer (REST) is an architectural style for building APIs. Technically, REST is a broad definition that could apply to almost the entirety of the Internet, so don’t let yourself get overwhelmed by the definition or caught in an argument with a pedant. When we talk about RESTful or REST-like APIs in the Laravel world, we’re generally talking about APIs with a few common characteristics:
Structured around “resources” that can be uniquely represented by URIs, like
/cats for all cats,
/cats/15 for a single cat with the ID of 15, etc.
Interactions with resources primarily take place using HTTP verbs (
GET /cats/15 versus
Stateless, meaning there’s no persistent session authentication between requests; each request must uniquely authenticate itself
Cacheable and consistent, meaning each request (except for a few authenticated-user-specific ...