首页 > 解决方案 > 对 Java Spring API 的 PATCH 请求

问题描述

我想在 OpenShift API 中发出 PATCH 请求。为了使它更容易,我们认为我们在 OpenShift API 中看到了这一点:

内容可以是这样的:

{ 
  "limits":{ 
    "cpu":"10m"
  },
  "requests":{ 
    "memory":"1G"
  }
}

或这个 :

{ 
  "limits":{ 
    "cpu":"30m",
    "memory":"2G"
  },
  "requests":{ 
    "memory":"5G"
  }
}

或者......,你明白我的意思;)来自Json的键可以是也可以不是。

所以现在,我想知道如何制作补丁而不必知道过去是什么,因为代码只会接收新值,无论是否为空。

我希望清楚:) 我将 JDK 13 和 Spring 与 Maven 一起使用

谢谢

标签: javajsonopenshifthttp-patch

解决方案


最合适的解决方案似乎是将您的请求作为json-patch请求。格式化文档:http: //jsonpatch.com/

在我的示例中,我正在更新我的 DeploymentConfig 的“图像”属性,但这应该适用于其他类型的对象。请注意,您可以为每个请求创建多个补丁命令,并且每个补丁命令只需要了解构成您正在更改的路径的属性。

我的请求设置:配置文档

  • 请求:PATCH /apis/apps.openshift.io/v1/namespaces/$NAMESPACE/deploymentconfigs/$NAME
  • 授权:不记名$TOKEN
  • 标题:

    • 内容类型:application/json-patch+json
    • 接受:应用程序/json
    • 连接:关闭
  • 身体:

[
    {
        "op": "replace", 
        "path": "/spec/template/spec/containers/0/image", 
        "value": "my-repo-image.url/my-image:v10"
    },
    { "op": "add", ... },
    { "op": "remove", ...},
    ...
]

推荐阅读