Designing Evolvable Web APIs with ASP.NET
by Glenn Block, Pablo Cibraro, Pedro Felix, Howard Dierking, Darrel Miller
Chapter 8. Improving the API
No pain, no gain. That’s what makes you a champion.
In the previous chapter we discussed the initial implementation of the issue tracker system. The idea was to have a fully functional implementation that we could use to discuss the design of the API and the media types to support it. As part of this chapter, we will try to improve that existing implementation by adding new features like caching, conflict detection, and security. All the requirements for these new features will be described in terms of BDD as we did with the initial implementation. As we add those new features, we will dive into the details of the implementation, showing real code, and also some of the introductory theory behind them. Later chapters will complement that theory in more detail.
Acceptance Criteria for the New Features
Following are the tests for our API, which cover the new requirements for the tracker system:
Feature: Output Caching Scenario: Retrieving existing issues Given existing issues When all issues are retrieved Then a CacheControl header is returned Then a '200 OK' status is returned Then all issues are returned Scenario: Retrieving an existing issue Given an existing issue When it is retrieved Then a LastModified header is returned Then a CacheControl header is returned Then a '200 OK' status is returned Then it is returned Feature: Cache revalidation Scenario: Retrieving an existing issue that has not changed Given an existing issue When it is retrieved with an ...