Synopsis:
*
is at the heart of processing HTTP requests.ctx
Represents the "context", which contains all the information and methods needed to process the request, such as the request data, response builder, routing parameters, and so on.
Basic format:
func SomeHandler(ctx *) { // Use ctx to process requests and build responses }
Common Uses:
1. Reading query parameters
Reads the query string parameters from the request.
func ReadQueryParams(ctx *) { value := ("someParam") // Get query parameters (, { "someParam": value, // Display the parameters }) }
2. Read POST form data
For access to form data sent in a POST request
func ReadPostForm(ctx *) { value := ("somePostParam") // Getting POST form parameters (, { "somePostParam": value, }) }
3. Read JSON request body
If the request has a JSON body, bind it to a struct.
type RequestBody struct { Message string `json:"message"` } func ReadJSONBody(ctx *) { var body RequestBody if err := (&body); err != nil { (, {"error": "Invalid JSON"}) // JSON binding failed return } (, { "message": , }) }
4. Write JSON response
Writes a JSON response to the client.
func WriteJSONResponse(ctx *) { (, { "status": "success", "data": "some data", }) }
5. Streaming response
For large responses, you can stream data to the client.
func StreamResponse(ctx *) { for i := 0; i < 10; i++ { ("message", {"data": "Streaming " + (i)}) (1 * ) } }
6. Access routing parameters
It is possible to useParam
method to access the routing parameters.
func RouteParameter(ctx *) { productID := ("id") // Getting Route Parameters (, { "product_id": productID, }) }
7. Setting cookies
You can set and get cookies.
func CookieExample(ctx *) { ("username", "user1", 3600, "/", "localhost", false, true) // Setting cookies username := ("username") // Getting a cookie (, { "cookie_username": username, }) }
8. Error handling
You can handle errors and return appropriate responses.
func ErrorHandling(ctx *) { if someCondition { (, {"error": "Bad request"}) // Send an error response } else { (, {"message": "Success"}) // Send success response } }
9. Uploading of documents
Handling file uploads is also supported.
func FileUpload(ctx *) { file, err := ("file") // Get the uploaded file if err != nil { (, {"error": "Error uploading file"}) // File upload failed return } (file, "path/to/save/"+) // Save the document (, {"message": "File uploaded successfully"}) // File uploaded successfully }
10. Use of middleware
*
Often used in middleware to perform actions before and after request processing.
func MyMiddleware(c *) { ("myKey", "myValue") // Setting values in middleware () // Call the next middleware or processor } func main() { router := () (MyMiddleware) // Use custom middleware ("/somepath", func(c *) { value := ("myKey") // Getting values from middleware (, {"myKey": value}) }) () }
to this article on the Go gin framework * parameter common practical approach to this article, more related Go gin framework * parameter content please search for my previous articles or continue to browse the following related articles I hope you will support me in the future more!