HTTP Caching for APIs: Cache-Control, ETags, and Conditional Requests