前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >调用V2的老接口做项目管理

调用V2的老接口做项目管理

原创
作者头像
黄希彤
修改2022-10-24 10:05:36
3890
修改2022-10-24 10:05:36
举报
文章被收录于专栏:黄希彤的专栏黄希彤的专栏

一个账号服务于多人多个项目,为了亲兄弟明算账,要把账号内通过API创建的的资源都挂到不同的项目下。腾讯云v2之前的的API是支持做项目管理的,自从升级到到v3以后就没有这个能力了,在API Explorer里面查不到任何相关的接口,其他接口中涉及到项目ID的地方还会指向几个老版本的超链接,但是也都是空页面自动跳转掉了。

相关的接口文档已经失踪了
相关的接口文档已经失踪了

实在想要通过程序自动化的管理项目,只能退回到v2的老接口。虽然详细的接口文档已经不好找了,但是一番努力还是在github上找到了已经废弃的几个老文档:

v2接口调用的公共参数

v2接口签名的生成算法

项目相关的v2接口

有了这几样东西,就很容易包装出来基础的项目管理模块了:

代码语言:javascript
复制
const crypto=require('crypto'),https=require('https');
function call_v2(domain,param){
	const baseURL = domain+".api.qcloud.com/v2/index.php?";
	let p={
		SecretId:secretId,
		Timestamp:Math.floor(Date.now()/1000),
		Nonce:Math.floor(Math.random()*90000+10000),
		SignatureMethod : "HmacSHA256",
	}
	Object.assign(p,param);
	let orgString = "GET"+baseURL+Object.keys(p).sort()
		.map(key=>key+"="+p[key]).join("&")
	let signature = crypto.createHmac('SHA256',secretKey)
		.update(orgString).digest('base64')
	p.Signature = encodeURIComponent(signature)
	let url = "https://"+baseURL+Object.keys(p).sort()
		.map(key=>key+"="+p[key]).join("&")
	return new Promise((res, rej) => {
		const req = https.request(url,{},(result) => {
			let chunks = [];
			result.on('data',(d)=>{chunks.push(d)});
			result.on('end',()=>{res(JSON.parse(chunks.toString()))})
			result.on('error', (e) => {	rej(e)})
		});
		req.end();
	})
}
function call_v2_account(param){
	return call_v2("account",param)
}
function call_v2_tag(param){
	return call_v2("tag",param)
}
function describeProject(){
	let param={Action:"DescribeProject"}
	return call_v2_account(param)
}
function addProject(name,desc){
	let param={
		Action:"AddProject",
		projectName:name,
		projectDesc:desc
	}
	return call_v2_account(param)
}
function updateProject(projectId,name,desc){
	let param={Action:"UpdateProject",
	projectId:projectId,
	name:name,
	info:desc"
	}
	return call_v2_tag(param)
}
function stopProject(projectId){
	let param={Action:"StopProject",projectId:projectId}
	return call_v2_tag(param)
}
function startProject(projectId){
	let param={Action:"StartProject",projectId:projectId}
	return call_v2_tag(param)
}

一个账号最多只能创建100个项目,而项目一旦创建就删除不了,不管是API还是界面上都删除不了,所以创建这个接口就不要反复测试了。

项目产生的费用要到第二天才能看到明细

测试项目1
测试项目1
测试项目2
测试项目2

其实用request写会更简洁一点点,但是因为在SCF中使用的时候不想多挂一个request的层,所以试用nodejs原生的https模块实现了网络访问。

现在v3的API和SDK已经比较完备了,但是还是偶尔会感觉到网页控制台上能做的事情比API和SDK能做的多一些,但是网页控制台它不也得通过API去完成所有的操作吗?有时这样扒拉一下旧文档说不定就能发现惊喜。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
项目管理
CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档