go - 错误:在services.GetCharactersID的参数中不能使用c.Param(“id”)(类型字符串)作为int类型。

标签 go glide-golang go-gin

以下代码有错误:

错误:

controllers / controllers.go:80:53:无法在服务参数中使用c.Param(id)(类型字符串)作为int类型.GetCharactersID controllers / controllers.go:80:54:undefined:id)

func GetCharactersID (c *gin.Context) {
    characters, err := services.GetCharactersID(c.Param("id"))
    if err!=nil {
        response:= domain.Response{Mensaje:err.Error()}
        c.JSON(http.StatusInternalServerError,response)
        return
    }
    c.JSON (http.StatusOK,characters)
}
//Services

func GetCharactersID (id int) (domain.Characters,error) {
    var err error
    characterss,err := GetCharactersID(id)
    s := strconv.Itoa(id)
    ts := "my_hashjavi"
    hash := GetHashString(ts+private_key+public_key)
    var url string = "https://gateway.marvel.com:443/v1/public"
    url += "/characters" + "/"
    url+= s + "?"
    url += "ts="+ts
    url += "&apikey="+ public_key
    url += "&hash="+ hash
    resp,err1 := http.Get(url)
    Data, err2 := ioutil.ReadAll(resp.Body)

    if err1 != nil || err2 != nil {
        err= errors.New("Error al obtener los personajes")
        return characterss,err
    }
    json.Unmarshal(Data,&characterss)
    return characterss , nil

}

最佳答案

我没有完整的代码,但是我将其重构并应用有关id的修复不是int

func GetCharactersID(c *gin.Context) {
    characters, err := services.GetCharactersID(c.Param("id"))
    if err != nil {
        response := domain.Response{Mensaje: err.Error()}
        c.JSON(http.StatusInternalServerError, response)
        return
    }
    c.JSON(http.StatusOK, characters)
}

func GetCharactersID(sID string) (domain.Characters, error) {
    base := "https://gateway.marvel.com:443/v1/public"
    ts := "my_hashjavi"
    id, err := strconv.Atoi(sID)
    if err != nil {
        return characterss, errors.New("xxx...")
    }

    characterss, err := GetCharactersID(sID)
    if err != nil {
        return characterss, errors.New("xxx...")
    }

    hash := GetHashString(ts + private_key + public_key)
    url := fmt.Sprint("%s/characters/%d?ts=%s&apikey=%s&hash=%s",
        base, sID, ts, public_key, hash)

    resp, err := http.Get(url)
    if err != nil
        return characterss, errors.New("xxx...")
    }

    data, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        return characterss, errors.New("xxx...")
    }

    err = json.Unmarshal(data, &characterss)
    if err != nil {
        return characterss, err
    }

    return characterss, errors.New("xxx...")
}

关于go - 错误:在services.GetCharactersID的参数中不能使用c.Param(“id”)(类型字符串)作为int类型。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60214143/

相关文章:

HTML - 查找给定标签中的所有子标签

rest - golang 的 Shim 接口(interface)中的补丁函数

go - 如何使用 go gin 从 Auth0 jwt token 检索权限

mongodb - 使用 := gives unused error but using = don't in Go

go - 如何将日期字符串绑定(bind)到结构?

go - 如何在Gin的url中添加语言前缀?

error-handling - 去检查自定义错误的类型

image - 更改单个像素的颜色 - Golang 图像

MySQL 位类型映射到哪种 Go 类型?

go - 修复 go 使用的工具版本