Development Process¶
Guidance
- API Teams should determine requirements.
- API Teams should develop a design to handle those requirements.
- API Teams should practice an iterative development cycle, which often means revisiting requirements and refining design as the development is completed.
- API design should be a generic interface, and not specialized to a single consumer.
- Development of an API should take place in the development environment.
Requirements¶
API development starts with understanding the requirements to know why this effort is worthwhile:
- What functionality does the API provide?
- What potential applications might be built with the API?
- Who will the expected consumers be?
- How will consumers interact with the interface?
- Where will the API be hosted?
- What is the expected load initially, and growth over time?
Next, the focus turns to the design of the API:
- Structure of the endpoints and endpoint naming
- Structure of the requests and response objects
- Authentication and authorization process
- Error handling practices and response objects
- Documentation of the interface contract
- Performance and scalability strategy
- Test data approach
Design¶
Early in the design phase, set up a development environment to handle a simple request to validate the infrastructure functions as expected. The request should traverse all layers of your infrastructure, including:
- authentication and authorization layer
- cache layer (if any will exist)
- endpoint:
- controller
- validation layer
- business layer(s)
- persistent data store(s)
- response layer
- return a well-formed response
- logging integration
Iterative Development¶
- Establish automated workflow processes to build, validate and deploy the code base as changes are completed.
- Stub out the business behavior layers and any interactions with other services during early development, building the layers iteratively as designs materialize.
Automate validation¶
- Validate the expected endpoint behavior and the request and response object structures as development is iterating.
- Establish automated testing to validate behavior.