Document ContextTimeout middleware with comprehensive examples#2819
Open
Document ContextTimeout middleware with comprehensive examples#2819
Conversation
…xamples Addresses issue #2665 by providing comprehensive documentation for the Logger middleware including: **Configuration Examples:** - Basic usage with default settings - Custom simple and JSON formats - Custom time formatting - Header, query, form, and cookie logging - File output configuration - Custom tag functions - Conditional logging with Skipper - External logging service integration **Detailed Tag Reference:** - Complete list of all available tags (time, request, response, dynamic) - Clear explanations of each tag's purpose and format - Examples showing proper usage **Enhanced Field Documentation:** - Detailed descriptions for all LoggerConfig fields - Examples for each configuration option - Default values and behavior **Troubleshooting Section:** - Common issues and solutions - Performance optimization tips - Best practices for high-traffic applications **Function Documentation:** - Enhanced Logger() and LoggerWithConfig() documentation - Example outputs and usage patterns This makes the Logger middleware much more accessible to new users while providing advanced configuration guidance for experienced developers. Fixes #2665 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Addresses issue #2745 by providing complete documentation for the ContextTimeout middleware, which was previously undocumented despite being the recommended approach over the deprecated Timeout middleware. **Documentation Added:** **Overview & Key Differences:** - Clear explanation of why ContextTimeout is preferred over Timeout middleware - Highlights safety improvements (no response writer interference, no data races) - Explains cooperative cancellation model **Configuration Examples:** - Basic usage with simple timeout - Custom error handling for timeout responses - Route-specific skipping with Skipper - Advanced configuration patterns **Handler Examples (3 detailed scenarios):** - Context-aware database queries with proper error handling - Long-running operations using goroutines and select statements - HTTP client requests with context propagation **Best Practices & Common Patterns:** - Database operations: `db.QueryContext(ctx, ...)` - HTTP requests: `http.NewRequestWithContext(ctx, ...)` - Redis operations: `client.Get(ctx, key)` - CPU-intensive loops with context checking **Enhanced Field Documentation:** - Detailed explanations for Skipper, ErrorHandler, and Timeout fields - Examples for each configuration option - Recommended timeout values for different use cases **Function Documentation:** - Comprehensive ContextTimeout() documentation with usage examples - Enhanced ContextTimeoutWithConfig() with advanced patterns - ToMiddleware() method documentation for validation scenarios This resolves user confusion about which timeout middleware to use and provides practical examples showing how handlers should be implemented to work effectively with context-based timeouts. Fixes #2745 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Addresses issue #2745 by providing comprehensive documentation for the ContextTimeout middleware, which was completely undocumented despite being the recommended approach for handling request timeouts in Echo.
Problem Solved
Users were confused because:
Changes
📚 Comprehensive Configuration Documentation
Overview & Key Differences:
Configuration Examples (3 scenarios):
middleware.ContextTimeout(30 * time.Second)🛠️ Practical Handler Examples
3 Detailed Real-World Scenarios:
📖 Best Practices & Patterns
Common Integration Patterns:
db.QueryContext(ctx, query, args...)http.NewRequestWithContext(ctx, method, url, body)redisClient.Get(ctx, key)ctx.Done()checkingPractical Guidelines:
🔧 Enhanced Field Documentation
🚀 Function Documentation
Impact
This documentation addresses the exact concerns raised in issue #2745:
Before/After
Before: Zero documentation, users confused about which timeout middleware to use
After: Enterprise-grade documentation with practical examples and best practices
Testing
Fixes #2745
This PR complements PR #2818 (Logger middleware documentation) as part of ongoing efforts to improve Echo's middleware documentation quality.