
ASP.NET Web API快速入門介紹
1. 在云 API 密鑰頁面,單擊【新建密鑰】即可以創(chuàng)建一對 SecretId/SecretKey。
2. 在彈窗里復制密鑰
安全憑證包括 SecretId 和 SecretKey:
有了安全憑證 SecretId 和 SecretKey 后,就可以生成簽名串了。以下是使用簽名方法 v1 生成簽名串的詳細過程:
假設用戶的 SecretId 和 SecretKey 分別是:
AKID********************************
********************************
注意:這里只是示例,請根據用戶實際申請的 SecretId 和 SecretKey 進行后續(xù)操作!
以云服務器查看實例列表(DescribeInstances)請求為例,當用戶調用這一接口時,其請求參數可能如下:
參數名稱 | 中文 | 參數值 |
---|---|---|
Action | 方法名 | DescribeInstances |
SecretId | 密鑰 ID | AKID******************************** |
Timestamp | 當前時間戳 | 1465185768 |
Nonce | 隨機正整數 | 11886 |
Region | 實例所在區(qū)域 | ap-guangzhou |
InstanceIds.0 | 待查詢的實例 ID | ins-09dx96dg |
Offset | 偏移量 | 0 |
Limit | 最大允許輸出 | 20 |
Version | 接口版本號 | 2017-03-12 |
這里只展示了部分公共參數和接口輸入參數,用戶可以根據實際需要添加其他參數,例如 Language 和 Token 公共參數。
首先對所有請求參數按參數名的字典序( ASCII 碼)升序排序。注意:1)只按參數名進行排序,參數值保持對應即可,不參與比大??;2)按 ASCII 碼比大小,如 InstanceIds.2 要排在 InstanceIds.12 后面,不是按字母表,也不是按數值。用戶可以借助編程語言中的相關排序函數來實現(xiàn)這一功能,如 PHP 中的 ksort 函數。上述示例參數的排序結果如下:
{
'Action' : 'DescribeInstances',
'InstanceIds.0' : 'ins-09dx96dg',
'Limit' : 20,
'Nonce' : 11886,
'Offset' : 0,
'Region' : 'ap-guangzhou',
'SecretId' : 'AKID********************************',
'Timestamp' : 1465185768,
'Version': '2017-03-12',
}
使用其它程序設計語言開發(fā)時,可對上面示例中的參數進行排序,得到的結果一致即可。
此步驟生成請求字符串。
將把上一步排序好的請求參數格式化成“參數名稱=參數值”的形式,如對 Action 參數,其參數名稱為 “Action” ,參數值為 “DescribeInstances” ,因此格式化后就為 Action=DescribeInstances 。
注意:“參數值”為原始值而非 url 編碼后的值。
然后將格式化后的各個參數用”&”拼接在一起,最終生成的請求字符串為:
Action=DescribeInstances&InstanceIds.0=ins-09dx96dg&Limit=20&Nonce=11886&Offset=0&Region=ap-guangzhou&SecretId=AKID********************************&Timestamp=1465185768&Version=2017-03-12
此步驟生成簽名原文字符串。
簽名原文字符串由以下幾個參數構成:
簽名原文串的拼接規(guī)則為:請求方法 + 請求主機 +請求路徑 + ? + 請求字符串
。
示例的拼接結果為:
GETcvm.tencentcloudapi.com/?Action=DescribeInstances&InstanceIds.0=ins-09dx96dg&Limit=20&Nonce=11886&Offset=0&Region=ap-guangzhou&SecretId=AKID********************************&Timestamp=1465185768&Version=2017-03-12
此步驟生成簽名串。
首先使用 HMAC-SHA1 算法對上一步中獲得的簽名原文字符串進行簽名,然后將生成的簽名串使用 Base64 進行編碼,即可獲得最終的簽名串。
具體代碼如下,以 PHP 語言為例:
$secretKey = '********************************';
$srcStr = 'GETcvm.tencentcloudapi.com/?Action=DescribeInstances&InstanceIds.0=ins-09dx96dg&Limit=20&Nonce=11886&Offset=0&Region=ap-guangzhou&SecretId=AKID********************************&Timestamp=1465185768&Version=2017-03-12';
$signStr = base64_encode(hash_hmac('sha1', $srcStr, $secretKey, true));
echo $signStr;
最終得到的簽名串為:
9FzTQAN1UZ489+BqCg1fNBQaCqw=
使用其它程序設計語言開發(fā)時,可用上面示例中的原文進行簽名驗證,得到的簽名串與例子中的一致即可。
生成的簽名串并不能直接作為請求參數,需要對其進行 URL 編碼。
如上一步生成的簽名串為 9FzTQAN1UZ489+BqCg1fNBQaCqw= ,最終得到的簽名串請求參數(Signature)為:9FzTQAN1UZ489%2BBqCg1fNBQaCqw%3D,它將用于生成最終的請求 URL。
注意:如果用戶的請求方法是 GET,或者請求方法為 POST 同時 Content-Type 為 application/x-www-form-urlencoded,則發(fā)送請求時所有請求參數的值均需要做 URL 編碼,參數鍵和=符號不需要編碼。非 ASCII 字符在 URL 編碼前需要先以 UTF-8 進行編碼。
注意:有些編程語言的網絡庫會自動為所有參數進行 urlencode,在這種情況下,就不需要對簽名串進行 URL 編碼了,否則兩次 URL 編碼會導致簽名失敗。
注意:其他參數值也需要進行編碼,編碼采用 RFC 3986。使用 %XY 對特殊字符例如漢字進行百分比編碼,其中“X”和“Y”為十六進制字符(0-9 和大寫字母 A-F),使用小寫將引發(fā)錯誤。
點擊右上角賬號,下拉列表選擇【密鑰管理】-點擊【新建密鑰】,可獲取訪問密鑰(Access Key ID、Secret Access Key)。后續(xù)可使用此密鑰調用接口,請您妥善保管。
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Random;
import java.util.TreeMap;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;
public class TencentCloudAPIDemo {
private final static String CHARSET = "UTF-8";
public static String sign(String s, String key, String method) throws Exception {
Mac mac = Mac.getInstance(method);
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(CHARSET), mac.getAlgorithm());
mac.init(secretKeySpec);
byte[] hash = mac.doFinal(s.getBytes(CHARSET));
return DatatypeConverter.printBase64Binary(hash);
}
public static String getStringToSign(TreeMap<String, Object> params) {
StringBuilder s2s = new StringBuilder("GETcvm.tencentcloudapi.com/?");
// 簽名時要求對參數進行字典排序,此處用TreeMap保證順序
for (String k : params.keySet()) {
s2s.append(k).append("=").append(params.get(k).toString()).append("&");
}
return s2s.toString().substring(0, s2s.length() - 1);
}
public static String getUrl(TreeMap<String, Object> params) throws UnsupportedEncodingException {
StringBuilder url = new StringBuilder("https://cvm.tencentcloudapi.com/?");
// 實際請求的url中對參數順序沒有要求
for (String k : params.keySet()) {
// 需要對請求串進行urlencode,由于key都是英文字母,故此處僅對其value進行urlencode
url.append(k).append("=").append(URLEncoder.encode(params.get(k).toString(), CHARSET)).append("&");
}
return url.toString().substring(0, url.length() - 1);
}
public static void main(String[] args) throws Exception {
TreeMap<String, Object> params = new TreeMap<String, Object>(); // TreeMap可以自動排序
// 實際調用時應當使用隨機數,例如:params.put("Nonce", new Random().nextInt(java.lang.Integer.MAX_VALUE));
params.put("Nonce", 11886); // 公共參數
// 實際調用時應當使用系統(tǒng)當前時間,例如: params.put("Timestamp", System.currentTimeMillis() / 1000);
params.put("Timestamp", 1465185768); // 公共參數
// 需要設置環(huán)境變量 TENCENTCLOUD_SECRET_ID,值為示例的 AKID********************************
params.put("SecretId", System.getenv("TENCENTCLOUD_SECRET_ID")); // 公共參數
params.put("Action", "DescribeInstances"); // 公共參數
params.put("Version", "2017-03-12"); // 公共參數
params.put("Region", "ap-guangzhou"); // 公共參數
params.put("Limit", 20); // 業(yè)務參數
params.put("Offset", 0); // 業(yè)務參數
params.put("InstanceIds.0", "ins-09dx96dg"); // 業(yè)務參數
// 需要設置環(huán)境變量 TENCENTCLOUD_SECRET_KEY,值為示例的 ********************************
params.put("Signature", sign(getStringToSign(params), System.getenv("TENCENTCLOUD_SECRET_KEY"), "HmacSHA1")); // 公共參數
System.out.println(getUrl(params));
}
}
{
"Response": {
"TotalCount": 0,
"InstanceStatusSet": [],
"RequestId": "b5b41468-520d-4192-b42f-595cc34b6c1c"
}
}
}
res = service.json(‘translate’, {}, json.dumps(body))
print(json.loads(res))
Q:如何找到騰訊AI
A:冪簡集成是國內領先的API集成管理平臺,專注于為開發(fā)者提供全面、高效、易用的API集成解決方案。冪簡API平臺可以通過以下兩種方式找到所需API:通過關鍵詞搜索API(例如,輸入’騰訊AI‘這類品類詞,更容易找到結果)、或者從API hub分類頁進入尋找。
Q:NLP 服務的優(yōu)勢是什么?
A:我們的優(yōu)勢可以概括為三個方面:
語料上,NLP 服務多年來專注中文自然語言處理,在不同場景下積累了千億級互聯(lián)網語料。
技術上,整合了騰訊內部優(yōu)秀的 NLP 能力,擁有數千篇相關技術專利和論文。
服務上,NLP 服務曾為數個騰訊億級用戶產品提供堅實的服務支撐。
Q:NLP 服務是否收費?
A:NLP 服務,已于2023年4月25日正式開始新的收費標準?;A NLP 服務(詞法分析、相似詞召回、詞相似度、句子相似度),將為每個騰訊云賬號提供累計5萬次的免費調用額度;高級 NLP 服務(文本潤色、句子糾錯、文本補全、句子生成),將為每個騰訊云賬號提供累計1000次的免費調用額度。
Q:NLP 服務如何接入使用?
A:我們提供完備的 API 服務以及對應的 SDK ,您只要注冊了騰訊云賬號,即可按照 API 文檔 接入使用,并可在我們的產品控制臺上看到對應的使用數據。
Q:NLP 服務有免費額度嗎?
A:基礎 NLP 服務(詞法分析、相似詞召回、詞相似度、句子相似度),將為每個騰訊云賬號提供累計5萬次的免費調用額度;高級 NLP 服務(文本潤色、句子糾錯、文本補全、句子生成),將為每個騰訊云賬號提供累計1000次的免費調用額度。
提供AI大模型API的服務商除了騰訊AI,還有其他替代服務商也提供類似api服務,例如:
360多模態(tài)大語言模型、語音大模型服務MiniMax-稀宇科技、通用大模型開放平臺-華藏、訊飛星火認知大模型
更多競品可以在冪簡集成開放平臺中找到。
Q:騰訊AI這個密鑰還適用于哪些api?
本文旨在為開發(fā)者們提供一份詳盡且實用的“如何獲取騰訊AI開放平臺訪問token分步指南”。從騰訊AI平臺賬號的注冊,到開發(fā)者身份的認證,再到API服務密鑰的成功獲取,本文覆蓋了整個流程的每一個關鍵環(huán)節(jié),并配以清晰的步驟說明和詳盡的操作指導,確保了每位開發(fā)者都能輕松上手,順利完成每一步操作。此外,本文還特別強調了密鑰獲取后的可用性測試步驟,這是確保API能夠順利集成到應用中,并發(fā)揮最佳效果的重要保障。通過這一指南,開發(fā)者們不僅能夠快速掌握獲取騰訊AI訪問token的方法,還能學會如何有效地進行后續(xù)的應用集成與測試,從而充分發(fā)揮騰訊AI開放平臺的強大功能。本文為開發(fā)者們提供了一個全面、實用的指南,幫助他們輕松獲取騰訊AI密鑰,并將這一先進的數據處理能力有效集成到應用中,從而提升應用的智能化水平,優(yōu)化用戶體驗,為數字化轉型之路增添強勁動力。