API Platform uses these model classes to expose a web API having a bunch of built-in features:
* creating, retrieving, updating and deleting (CRUD) resources
* data validation
* hypermedia/HATEOAS and content negotiation support (JSON-LD, HAL, JSON API)
* GraphQL support
* Nice UI and machine-readable documentations (Swagger/OpenAPI, Hydra)
* authentication (Basic HTTP, cookies as well as JWT and OAuth through extensions)
* CORS headers
* security checks and headers (tested against OWASP recommendations)
* invalidation-based HTTP caching
* and basically everything needed to build modern APIs.
One more thing, before we start: as the API Platform distribution includes the Symfony framework, it is compatible with most Symfony bundles (plugins) and benefits from the numerous extensions points provided by this rock-solid foundation (events, DIC...). Adding features like custom, service-oriented, API endpoints, JWT or OAuth authentication, HTTP caching, mail sending or asynchronous jobs to your APIs is straightforward.