我在写代码来访问cloudfoundry平台并提取已推送到云上的所有应用程序的数据摘要。GoLang-PostForm请求更新Cloudfoundry应用程序的资源之一
我可以单独访问每个应用程序,并通过http.GET
请求显示与每个应用程序相关的数据,但我希望能够更新/更改特定于应用程序的某些数据。这是名为xzys
一个应用程序的样本数据返回:
{
"metadata": {
"guid": "71a3c77f-d2791232323-4b7625dq32908492b04f17e",
"url": "/v2/apps/71a3c77f-d2791232323-4b7625dq32908492b04f17e",
"created_at": "2000-18-24T",
"updated_at": "2000-18-27T"
},
"entity": {
"name": "xzys",
"production": false,
"space_guid": "65050bcb-81c6-45a2-b6ef-5e7097c7ece1",
"stack_guid": "89a4fb19-08ef-4c44-90f7-f222a5699fdc",
"buildpack": null,
"detected_buildpack": "null,
"environment_json": {},
"memory": 1024,
"instances": 3,
"disk_quota": 512,
"state": "STARTED",
"version": "67124c27-9958-45a7-afc5-5b27007348ab",
"command": null,
"console": false,
"debug": null,
"staging_task_id": "e901672f958b4ff39d4efb48290367e8",
"package_state": "STAGED",
"health_check_timeout": null,
"staging_failed_reason": null,
"docker_image": null,
"package_updated_at": "2014-10-24T12:53:25+00:00",
"space_url": "/v2/spaces/71a3c77f-d2791232323-4b7625dq32908492b04f17e",
"stack_url": "/v2/stacks/71a3c77f-d2791232323-4b7625dq32908492b04f17e",
"events_url": "/v2/apps/71a3c77f-d2791232323-4b7625dq32908492b04f17e/events",
"service_bindings_url": "/v2/apps/7-4b7625dq32908492b04f17e/service_bindings",
"routes_url": "/v2/apps/771a3c77f-d2791232323-4b7625dq32908492b04f17e/routes"
}
}
So I have a url (
/V2 /应用/ 71a3c77f-d2791232323-4b7625dq32908492b04f17e ) that contains the summary of info for an individual app. I've been using a
http.Postform()`这个网址更新只是这个应用程序的资源之一(我打算更新这个应用程序的实例数量)。
这是我更新我的应用程序的“实例”资源代码:
func UpdateInstances(token string){
tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
client := &http.Client{Transport: tr}
req, err := client.PostForm("/v2/apps/71a3c77f-d2791232323-4b7625dq32908492b04f17e", url.Values{"instances" : 4})
req.Header.Add("Authorization", token)
if err != nil {
log.Fatal(err)
}
defer req.Body.Close()
}
这不会给我任何错误,但也不会更新资源。
嘿!感谢您的回答。我尝试了你的建议,虽然它没有给我任何错误,但它没有更新实例:(因为实例是float64,我试图更新另一个资源,实际上是一个名为“名称”的字符串,但也没有工作。其他建议? – 2014-10-29 10:04:27
我不熟悉cloudfoundry - 你可以展示一个curl调用来更新值,我们可以找出你发送的内容有什么不同吗? – dave 2014-10-29 17:07:38
嘿@Dave,谢谢我解决了这个问题。需要在http.NewRequest中使用“Put”方法 – 2014-10-30 16:30:35