>  기사  >  백엔드 개발  >  go-chi의 하위 경로에 대해 다른 미들웨어 설정

go-chi의 하위 경로에 대해 다른 미들웨어 설정

王林
王林앞으로
2024-02-09 10:06:08714검색

go-chi의 하위 경로에 대해 다른 미들웨어 설정

Go 언어의 웹 프레임워크인 go-chi에서는 하위 경로에 대해 서로 다른 미들웨어를 설정하는 것이 일반적인 요구 사항입니다. 미들웨어는 HTTP 요청과 응답을 처리하고 요청이 대상 프로세서에 도달하기 전후에 몇 가지 추가 작업을 수행할 수 있는 기능입니다. 다양한 하위 경로에 대해 서로 다른 미들웨어를 설정함으로써 비즈니스 요구에 따라 각 하위 경로를 개인화할 수 있습니다. 이 기사에서는 보다 유연한 라우팅 처리를 달성하기 위해 go-chi의 하위 경로에 대해 다양한 미들웨어를 유연하게 설정하는 방법을 소개합니다.

질문 내용

mustBeSecure을 사용하여 구성을 통해 비활성화할 수 있는 프록시 서버가 있습니다. 나는 이 프록시가 특정 하위 도메인인 "/application/health"에서 다르게 동작하여 항상 안전하지 않게 되기를 원합니다. 지금까지 시도한 모든 변경 사항은 실패했습니다. 여전히 프록시를 사용하지만 인증이 필요하지 않은 "/application/health"에 대해 다른 그룹을 구성하는 방법이 있습니까?

으아악

요청에 따라 다음은 setProxy()의 예입니다.

router := chi.NewRouter()
router.Route("/", func(r chi.Router) {
    r.Use(chimw.Recoverer)
    router.Use(hlog.NewHandler(log.Logger))
    if mustBeSecure() {
        r.Use(keycloak.MustStandardKeycloakAuth("url"))
    }
    setProxy(r)
    r.Group(func(r chi.Router) {
        r.Get("/health", handleHealth())
    })
})
return http.ListenAndServe("0.0.0.0", router)

해결 방법

이것을 시도하고 계시리라 믿습니다.

  • 모든 /application 경로에 라우터를 사용하세요
  • 성명 GET /health
  • 다른 모든 경로에 대한 그룹 만들기(/application에서)
  • 조건부 미들웨어 적용

이해를 돕기 위해 코드를 약간 단순화했습니다. setProxy 기능은 계속 사용할 수 있습니다.

으아악

위 내용은 go-chi의 하위 경로에 대해 다른 미들웨어 설정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제