获取从原始JSON到PATCH的特定字段

时间:2019-05-03 11:41:03

标签: json rest go

我正在尝试为我的REST API构建PATCH方法。我无法理解的是如何从JSON原始字段中获取名称,以将其用作UPDATE查询中的参数,以便查询可以知道要更新哪个字段,因为与PUT不同,PATCH仅需要更新一个字段,并且而不是数据库中的整个行。我正在使用SQLite3

编辑: 代码:

func PatchServer(c echo.Context) error {
    patchedServer := new(structs.Server)
    requestID := c.Param("id")
    if err := c.Bind(patchedServer); err != nil {
        return err
    }
    if reflect.TypeOf(patchedServer.Name).Kind() != reflect.String || reflect.TypeOf(patchedServer.Components).Kind() != reflect.Int {
        panic("Insert a string or an int")
    } else {
        sql := "UPDATE servers SET server_name = CASE WHEN ? IS NOT NULL THEN ? END WHERE id = ?"
        stmt, err := db.Get().Prepare(sql)
    if err != nil {
        panic(err)
    }
    _, err2 := stmt.Exec(patchedServer.Name, patchedServer.Name, requestID)
    if err2 != nil {
        panic(err2)
    }
    fmt.Println(patchedServer.ID, patchedServer.Name, patchedServer.Components)
    fmt.Println("Requested id: ", requestID)
    return c.JSON(http.StatusOK, "Patched!")
    }

0 个答案:

没有答案