HttpRequest and Named Credential 的介紹與說明 from ChatGPT
最近在把 JWT 的 authorization 換成 Named Credential 的方式,自覺對於一些基本的知識點還不夠紮實,所以就請教了 ChatGPT,我覺得它真的講解得蠻好的。
以下節錄他的說明:
解釋範例程式
答:
這段 Apex 代碼主要在建立一個 HTTP 請求,並且設置請求的方法、標頭、終結點和請求正文。
具體來說:
HttpRequest req = new HttpRequest();
建立了一個HttpRequest
對象,用於表示一個 HTTP 請求。req.setMethod('POST');
設置了請求的方法為 POST。req.setHeader('Content-Type', 'application/json; charset=utf-8');
設置了請求的 "Content-Type" 標頭為 "application/json; charset=utf-8"。req.setHeader('Content-Length', String.valueOf(payLoad.length()));
設置了請求的 "Content-Length" 標頭為請求正文的長度。req.setHeader('Authorization', 'Bearer ' + jwtToken);
設置了請求的 "Authorization" 標頭為 "Bearer " 加上某個變量jwtToken
的值。req.setEndpoint(requestUrl);
設置了請求的終結點(即請求傳送到哪個 URL)為某個變量requestUrl
的值。req.setBody(payLoad);
設置了請求的正文(即請求所帶的數據)為某個變量payLoad
的值。
之後,你可以使用 Http
類中的某個方法來發送這個 HTTP 請求,例如:
Http http = new Http(); HttpResponse res = http.send(req);
這樣就會發送一個 HTTP 請求,並且返回一個 HttpResponse
對象,表示請求的回應。
Authorization 的方式
"Authorization" 標頭是 HTTP 協議中的一個標頭,用於表示客戶端的權限。
通常,"Authorization" 標頭會使用以下兩種方法之一:
- 基本授權:使用用戶名和密碼的組合來授予權限。
示例:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
其中,"QWxhZGRpbjpvcGVuIHNlc2FtZQ==" 是用戶名 "Aladdin" 和密碼 "open sesame" 進行 Base64 編碼後得到的字符串。
- JWT 授權:使用 JSON Web Token(JWT)來授予權限。
示例:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
其中,"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" 是一個 JWT。
此外,還有其他一些較不常見的授權方法,例如:
- 過期授權:使用過期的用戶名和密碼的組合來授予權限。
- 加密授權:使用加密過的用戶名和密碼的組合來授予權限。
Named Credential 的說明
是的,"callout" 前綴是一種 Salesforce 中的特殊終結點,用於指定請求的終結點為命名凭據中的一個。
命名凭據是 Salesforce 中的一种特殊資源,用於表示外部系統的登錄信息和基本訪問路徑。它可以用於简化對外部系統的訪問,並且可以隐藏真實的登錄信息,以提高安全性。
例如,假設你在 Salesforce 中建立了一個命名凭據 "iDa_PWD",其中包含了外部系統的登錄信息和基本訪問路徑。那麼,你可以使用 "callout:iDa_PWD" 作為終結點來訪問該外部系統。
例如:
HttpRequest req = new HttpRequest();
req.setEndpoint('callout:iDa_PWD' + ath);
在這段代碼中,"callout:iDa_PWD" 是命名凭據的名稱,而 path
是外部系統的具體訪問路徑。
留言
張貼留言