API являются важной частью современных приложений и могут использоваться для предоставления данных и функций для доступа клиентских приложений. Запросы API могут занять много времени из-за таких факторов, как нестабильность сети, загрузка сервера, перегрузка сети и т. д. Это может вызвать задержки в работе клиентского приложения во время ожидания ответа, что в конечном итоге приведет к недовольству пользователей или даже отказу от приложения.
Чтобы избежать этого, вы можете установить таймаут для запросов API. Период таймаута означает, что если запрос API не получит ответа в течение определенного периода времени, запрос будет автоматически отменен. Это улучшает взаимодействие с пользователем, предотвращая ожидание клиентскими приложениями ответов API.
Gin — это легкий веб-фреймворк для создания высокопроизводительных веб-приложений. Он быстрый, простой и удобный в использовании и имеет множество расширяемых функций, таких как промежуточное программное обеспечение.
В рамках Gin промежуточное программное обеспечение — это механизм перехвата HTTP-запросов и ответов. Функции промежуточного программного обеспечения могут выполнять определенные операции до или после того, как запрос достигнет функции-обработчика, например:
Платформа Gin предоставляет простой способ определения и использования промежуточного программного обеспечения. Функции промежуточного программного обеспечения должны соответствовать следующим условиям:
В Gin вы можете использовать промежуточное программное обеспечение, чтобы установить тайм-аут обработки запросов API.
gin-contrib/timeout да Gin Официальный плагин фреймворка, который обеспечивает надежный способ установить период таймаута интерфейса и вернуть сообщение об ошибке при наступлении таймаута. использовать gin-contrib/timeout Это может значительно упростить наш код, сделать его более понятным и понятным.
Следующий да использует gin-contrib/timeout выполнить Gin Пример кода, возвращаемого по тайм-ауту интерфейса:
package main
import (
"log"
"net/http"
"time"
"github.com/gin-contrib/timeout"
"github.com/gin-gonic/gin"
)
func testResponse(c *gin.Context) {
c.JSON(http.StatusGatewayTimeout, gin.H{
"code": http.StatusGatewayTimeout,
"msg": "timeout",
})
}
func timeoutMiddleware() gin.HandlerFunc {
return timeout.New(
timeout.WithTimeout(3000*time.Millisecond),
timeout.WithHandler(func(c *gin.Context) {
c.Next()
}),
timeout.WithResponse(testResponse),
)
}
func main() {
r := gin.New()
r.Use(timeoutMiddleware())
r.GET("/slow", func(c *gin.Context) {
time.Sleep(5000 * time.Millisecond)
c.Status(http.StatusOK)
})
if err := r.Run(":8080"); err != nil {
log.Fatal(err)
}
}
В примере кода мы используем timeout.New() функция для создания промежуточного программного обеспечения и установки тайм-аута 3 Второй. Это промежуточное программное обеспечение будет включено во время обработки запроса, если время обработки запроса превысит время. 3 секунд, промежуточное программное обеспечение автоматически вернет HTTP 504 Код ошибки (шлюз Таймаут) и завершить запрос. Таким образом мы можем Gin 框架中非常方便地выполнить Тайм-аут интерфейса возвращает функцию。
Интерфейс доступа/медленный. Мы получим следующий ответный пакет.
{
"code": 504,
"msg": "timeout"
}
В этой статье мы расскажем, почему нам нужно устанавливать тайм-аут для API и как использовать промежуточное ПО для установки тайм-аута в Gin. разумно
о gin-contrib/timeout специфичен. Заинтересованные студенты могут подробно изучить его исходный код.
конечно,Мы также можем сделать это сами. timeout промежуточное программное обеспечение. Исходя из принципа не изобретать велосипед, рекомендуется использовать официальную библиотеку.