2015-09-07 20 views
6

tôi đã thiết lập một router mặc định và một số tuyến đường trong Gin:Thiết lập Route Not Found trong Gin

router := gin.Default() 
router.POST("/users", save) 
router.GET("/users",getAll) 

nhưng làm thế nào để xử lý 404 Route Not Found trong Gin?

Ban đầu, tôi đã sử dụng httprouter mà tôi hiểu Gin sử dụng vì vậy đây là những gì tôi ban đầu đã có ...

router.NotFound = http.HandlerFunc(customNotFound) 

và chức năng:

func customNotFound(w http.ResponseWriter, r *http.Request) { 
    //return JSON 
    return 
} 

nhưng điều này sẽ không làm việc với Gin.

tôi cần để có thể trở về JSON sử dụng c *gin.Context vì vậy mà tôi có thể sử dụng:

c.JSON(404, gin.H{"code": "PAGE_NOT_FOUND", "message": "Page not found"}) 

Trả lời

18

gì bạn đang tìm kiếm là handler NoRoute.

Chính xác hơn:

r := gin.Default() 

r.NoRoute(func(c *gin.Context) { 
    c.JSON(404, gin.H{"code": "PAGE_NOT_FOUND", "message": "Page not found"}) 
}) 
+0

Có I have seen that nhưng làm thế nào để làm cho bối cảnh gin sẵn? – tommyd456

+0

Bạn đã thấy chữ ký NoRoute chưa? Nó nhận được một Trình xử lý, sau đó nó được truyền vào Bối cảnh. Đó có phải là ý bạn không? –

+0

Bạn có thể cung cấp ví dụ về ý nghĩa của việc sử dụng/chuyển ngữ cảnh – tommyd456