使用 jwk.Key 作为 swagger 响应类型时不受支持的类型 "invalid type"
unsupported type "invalid type" when using jwk.Key as swagger response type
我有以下端点
package token
import (
"crypto/rsa"
"github.com/dhis2-sre/im-user/pkg/config"
"github.com/dhis2-sre/im-user/pkg/token/helper"
"github.com/gin-gonic/gin"
"log"
"net/http"
)
func ProvideHandler(config config.Config) Handler {
publicKey, err := config.Authentication.Keys.GetPublicKey()
if err != nil {
log.Fatalln(err)
}
return Handler{
publicKey,
}
}
type Handler struct {
publicKey *rsa.PublicKey
}
// Jwks godoc
// swagger:route GET /jwks Jwks
//
// Return a JWKS containing the public key which can be used to validate the JWT's dispensed at /signin
//
// responses:
// 200: Jwks
// 415: Error
// 500: Error
func (h *Handler) Jwks(c *gin.Context) {
jwks, err := helper.CreateJwks(h.publicKey)
if err != nil {
_ = c.Error(err)
return
}
c.JSON(http.StatusOK, jwks)
}
连同以下 swagger 响应定义
package token
import "github.com/lestrrat-go/jwx/jwk"
// swagger:response Jwks
type _ struct {
//in: body
_ jwk.Key
}
但是当我尝试使用以下命令生成规范时
swagger generate spec -o swagger/swagger.yaml -x swagger/sdk --scan-models
我收到以下错误
unsupported type "invalid type"
如果我使用 interface{}
而不是 jwk.Key 我可以生成没有错误的规范,但显然那不是我想要的类型
升级到版本 v0.29.0 解决了问题
我有以下端点
package token
import (
"crypto/rsa"
"github.com/dhis2-sre/im-user/pkg/config"
"github.com/dhis2-sre/im-user/pkg/token/helper"
"github.com/gin-gonic/gin"
"log"
"net/http"
)
func ProvideHandler(config config.Config) Handler {
publicKey, err := config.Authentication.Keys.GetPublicKey()
if err != nil {
log.Fatalln(err)
}
return Handler{
publicKey,
}
}
type Handler struct {
publicKey *rsa.PublicKey
}
// Jwks godoc
// swagger:route GET /jwks Jwks
//
// Return a JWKS containing the public key which can be used to validate the JWT's dispensed at /signin
//
// responses:
// 200: Jwks
// 415: Error
// 500: Error
func (h *Handler) Jwks(c *gin.Context) {
jwks, err := helper.CreateJwks(h.publicKey)
if err != nil {
_ = c.Error(err)
return
}
c.JSON(http.StatusOK, jwks)
}
连同以下 swagger 响应定义
package token
import "github.com/lestrrat-go/jwx/jwk"
// swagger:response Jwks
type _ struct {
//in: body
_ jwk.Key
}
但是当我尝试使用以下命令生成规范时
swagger generate spec -o swagger/swagger.yaml -x swagger/sdk --scan-models
我收到以下错误
unsupported type "invalid type"
如果我使用 interface{}
而不是 jwk.Key 我可以生成没有错误的规范,但显然那不是我想要的类型
升级到版本 v0.29.0 解决了问题