What is API Driven Development
Simply stated, API driven development involves development where API is the central component. In other words, all development revolves around the API and how it aids in the development process. Essentially, you build an API and then build an application on top of it. And given that APIs provide the building blocks for applications, it makes sense.
All development is API development
Rather than using web frameworks that invoke services and produce web pages, applications today are built by consuming and producing APIs.
All development is API development
Today’s software is built as services. Rather than using web frameworks that invoke services and produce web pages, today's applications are built by consuming and producing APIs. Applications have embraced APIs on the front end for connecting to rich clients; on the backend for integrating with internal systems; on the sides for enabling other applications to access their internal data and processes; and within, as applications are composed of a set of component services, linked together with APIs.
The majority of enterprise software development efforts are focused on building web applications using web frameworks. Java Enterprise Edition, Microsoft .NET, Ruby-on-Rails, PHP, and a variety of other technologies are used to implement web applications using model-view-controller (MVC) design patterns and page template technologies. For a decade, starting in the late 1990s, an entire generation of developers has spent the majority of its time building applications in this model.
APIs open enterprise applications
Integration architectures assume that applications are developed without considering whether to enable other applications to access their internal data and processes. Before the conventions of APIs were widely adopted, this was a prudent strategy. Trying to support application-to-application integration was an undue burden for the developer and was usually left as a project for another team.
The widespread adoption of the basic conventions of API design—RESTful design, JSON-based data, simple versioning, and key-based access control—means that developers can easily build APIs into their applications and support their usage without undue distraction from their central mission of application delivery. And because application delivery already requires an API-centric architecture to enable rich HTML5/JavaScript and mobile clients, APIs will be essential elements of the project scope.
The result: when the time comes for application-to-application integration, the need for separate integration middleware is obviated.
Rather than using web frameworks that invoke services and produce web pages, applications today are built by consuming and producing APIs.
We saw how applications have embraced APIs on the front end for connecting to rich clients; on the backend for integrating with internal systems; and on the sides for enabling other applications to access their internal data and processes.
Resilient and scalable cloud deployment for componentized applications
Modern Java applications are heavily componentized. Using frameworks like Spring or Java CDI, applications are assembled from a set of service components wired together at runtime. The advantages are:
-
complicated applications can be broken down into components that can be developed by disparate teams
-
applications can leverage and reuse existing components
-
components are interconnected without fragile, complex dependencies or tightly-coupled linkages.
Decomposed services and polyglot enterprise development
Rather than leveraging the more complicated traditional enterprise mechanisms (whether the legacy RPC approaches of CORBA and RMI or the cumbersome web services protocols such as SOAP), many developers are finding that the same lightweight API services that have proven to be resilient, scalable, and agile for front-end, back-end, and application-to-application scenarios can also be leveraged for application assembly. This is the essence of the micro services architecture.