java - 对 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 一起使用
谢谢
解决方案
最合适的解决方案似乎是将您的请求作为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", ...},
...
]
推荐阅读
- node.js - 由于 body-parser - server.js,后端未加载到浏览器中
- javascript - 文档写入 cookie 在 Safari 上不起作用
- telegram-bot - 如何在 Telegram Bot 中从用户那里获取信息?
- javascript - 递增运算符与循环中的 i + 1
- qt - 为什么 QSqlDatabase::drivers() 在 Qt 共享库项目中使用时为空?
- node.js - 如何将我的交易部署到 eth 网络?我将我的系统终端与 infura 主网一起使用,但它似乎不起作用。在我的本地工作
- rust - Rust lifetime confusion
- r - 关于 R 代码的 cph 错误的问题:找不到对象“n”
- linux - 什么是 OpenIPMI 以及如何使用它?
- android - 模拟方法响应