Gin에서 겹치는 와일드카드 경로 충돌
특정 경로와 와일드카드 경로를 조합하여 Gin 프로그램을 구현하려고 하면 기본 라우터가 종종 갈등을 겪습니다. 이 충돌의 몇 가지 예는 다음과 같습니다.
<code class="go">r.GET("/special", ...) // Serves a specific resource. r.Any("/*", ...) // Attempts to serve a default resource for all others.</code>
panic: wildcard route '*' conflicts with existing children in path '/*'
이 충돌은 와일드카드 경로(/*)가 /special과 같은 기존 하위 경로를 재정의하려고 시도하기 때문에 발생합니다.
충돌 해결
gin.NoRoute(...) 함수는 이 문제에 대한 해결책을 제공합니다. 라우터에 일치하는 다른 경로가 없는 경우에만 실행될 경로를 정의할 수 있습니다.
<code class="go">r.GET("/special", func(c *gin.Context) { // Serve the special resource... r.NoRoute(func(c *gin.Context) { // Serve the default resource...</code>
이 접근 방식을 사용하면 /special은 항상 특정 경로에 의해 처리되고 다른 경로는 일치하지 않습니다. 특정 경로는 기본 리소스로 연결됩니다.
추가 고려 사항
https://stackoverflow.com/a/32444263/에서 스택 오버플로 토론을 참조하세요. 이 해결 방법에 대한 자세한 내용은 244128을 참조하세요.
위 내용은 Gin에서 겹치는 와일드카드 경로 충돌을 피하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!