如何使用Go正确处理PATCH请求

时间:2018-11-24 15:15:01

标签: http go

我的postgresql数据库中有一个“设置”表,其中包含以下数据:

 id | price | duration | start_mn | end_mn | step |                   days_ranges
----+-------+----------+----------+--------+------+--------------------------------------------------
  1 |    50 |       40 |      540 |   1140 |   30 | [{"weekday":3,"ranges":{"from":599, "to":1079}}]

我想处理一个补丁请求,该请求将编辑单个字段,例如工期。

Atm我对此机构有一个http请求:{duration: 20}

我想知道如何正确打补丁。在我的GO后端上,设置了这些结构:

type Settings struct {
    Price      int
    Duration   int
    StartMn    int
    EndMn      int
    Step       int
    DaysRanges DaysRanges
}

type DaysRanges []struct {
    WeekDay int
    Ranges  struct {
        From int
        To   int
    }
}

现在可以处理它的功能:

func PatchSettings(w http.ResponseWriter, r *http.Request) {
    var settings Settings

    err := json.NewDecoder(r.Body).Decode(&settings)
    if err != nil {
        panic(err)
    }
}

到目前为止,我得到了一个对象设置,其中许多字段为空(因为仅在主体中传递了持续时间)。然后,我可以检查每个字段,如果它不是空的,则使用该字段的值对该特定字段进行sql更新。

但是我感觉对PATCH请求及其处理方式的理解还很差。

我正在寻找更好的方法。

0 个答案:

没有答案