什么是REST?

REST(Representational State Transfer)是一種架構風格,允許程序與Web應用程序進行通信并訪問這些應用程序提供的功能。REST API通?;?a href="http://www.dlbhg.com/blog/rest-api-dam">HTTP協議,使用標準的HTTP方法(如GET、POST、PUT、DELETE)來操作資源。


什么是JWT?

JSON Web令牌(JWT)是一種緊湊且URL安全的方式,用于在雙方之間傳遞聲明。JWT可以進行數字簽名、加密或兩者兼備,從而確保數據的完整性和安全性。JWT在REST API的身份驗證中非常常見,能夠有效減少密碼傳輸的風險。


生成REST API代碼存根

InterSystems IRIS提供了一種便捷的方法來生成REST API的代碼存根。通過使用OpenAPI 2.0規范,您可以快速生成API的基礎代碼結構。生成的代碼通常包括以下三個文件:

在實際開發中,我們大部分時間會集中在impl.cls文件中。


實現REST API

定義對象模型

在數據庫中,我們需要定義一個基礎對象模型。例如,創建一個“角色”(Character)對象,該對象包含以下屬性:

以下是對象模型的示例代碼:

Class TTRPG.Character Extends %Persistent {
    Property Name As %String [Required];
    Property Race As %String;
    Property Class As %String;
    Property Level As %String;

    Index NameIndex On Name [IdKey];    ClassMethod GetCharByName(Name As %String) As TTRPG.Character {
        Set Character = ##Class(TTRPG.Character).%OpenId(Name)
        Quit Character
    }
}

通過繼承%Persistent類,我們可以將“角色”對象存儲到數據庫中。IdKey屬性確保角色名稱的唯一性。


創建角色的API方法

以下是創建角色的PostCharacter方法實現:

ClassMethod PostCharacter(Name As %String, Class As %String, Race As %String, Level As %String) As %DynamicObject {
    Set results = {}
    Set char = ##Class(TTRPG.Character).%New()
    Set char.Name = Name
    Set char.Class = Class
    Set char.Race = Race
    Set char.Level = Level
    Set st = char.%Save()
    If st {
        Set charInfo = {}
        Set charInfo.Name = char.Name
        Set charInfo.Class = char.Class
        Set charInfo.Race = char.Race
        Set charInfo.Level = char.Level
        Set results.Character = charInfo
        Set results.Status = "Success"
    } Else {
        Set results.Status = "Error"
        Set results.Message = "無法創建角色"
    }
    Quit results
}

此方法接收角色的屬性作為參數,創建一個新的角色對象并保存到數據庫中。如果保存成功,將返回角色信息;否則返回錯誤消息。


獲取角色的API方法

以下是按名稱檢索角色的GetCharacterByName方法實現:

ClassMethod GetCharacterByName(charName As %String) As %DynamicObject {
    Set results = {}
    Set char = ##Class(TTRPG.Character).GetCharByName(charName)
    If char {
        Set charInfo = {}
        Set charInfo.Name = char.Name
        Set charInfo.Class = char.Class
        Set charInfo.Race = char.Race
        Set charInfo.Level = char.Level
        Set results.Character = charInfo
        Set results.Status = "Success"
    } Else {
        Set results.Status = "Error"
        Set results.Message = "未找到角色"
    }
    Quit results
}

此方法根據角色名稱檢索數據庫中的角色對象,并返回相應的信息。如果角色不存在,則返回錯誤消息。


獲取角色列表的API方法

以下是獲取所有角色列表的GetCharacterList方法實現:

ClassMethod GetCharacterList() As %DynamicObject {
    Set results = {}
    Set query = "SELECT Name, Class, Race, Level FROM TTRPG.Character"
    Set tStatement = ##Class(%SQL.Statement).%New()
    Set qstatus = tStatement.%Prepare(query)
    If qstatus '= 1 {
        Do ##Class(TTRPG.impl).%WriteResponse("錯誤:" _ $SYSTEM.Status.DisplayError(qstatus))
    }
    Set rset = tStatement.%Execute()
    Set characterList = []
    While rset.%Next() {
        Set charInfo = {}
        Set charInfo.Name = rset.Name
        Set charInfo.Class = rset.Class
        Set charInfo.Race = rset.Race
        Set charInfo.Level = rset.Level
        Do characterList.%Push(charInfo)
    }
    Set results.Status = "Success"
    Set results.TotalCount = rset.%ROWCOUNT
    Set results.CharacterList = characterList
    Quit results
}

此方法通過SQL查詢獲取所有角色信息,并返回包含角色列表的動態對象。


配置IRIS以支持JWT身份驗證

配置Web應用程序

  1. 在管理門戶中,導航到 系統管理 > 安全 > 應用程序 > Web應用程序。
  2. 創建一個新的Web應用程序,例如/api/TTRPG/
  3. 選擇REST單選按鈕,并勾選“使用JWT身份認證”。
  4. 設置JWT訪問令牌超時時間(建議3600秒)和刷新令牌超時時間(建議900秒)。

配置JWT身份驗證

  1. 在管理門戶中,導航到 系統管理 > 安全 > 系統安全 > 身份驗證/Web會話選項。
  2. 配置JWT頒發者字段和簽名算法。例如,將頒發者設置為InterSystems。

測試REST API

登錄并獲取JWT

通過/login端點進行登錄,發送以下JSON結構的請求:

{
    "user": "{YOURUSER}",
    "password": "{YOURPASSWORD}"
}

成功登錄后,將收到一個JWT令牌access_token),可用于后續請求。

創建角色

使用/characters端點發送POST請求,創建角色。請求頭需包含以下格式的授權信息:

Authorization: Bearer {JWTValue}

列出角色

使用/characters端點發送GET請求,獲取所有角色列表。

按名稱檢索角色

使用/characters/{charName}端點發送GET請求,按名稱檢索角色信息。


總結

通過本文,您學習了如何使用InterSystems IRIS創建一個REST API,并通過JWT對其進行保護。該方法不僅提升了API的安全性,還簡化了身份驗證的實現流程。希望本文對您有所幫助!

原文鏈接: https://community.intersystems.com/post/creating-rest-api-jwt-authentication-objectscript
熱門推薦
一個賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
3000+提示詞助力AI大模型
和專業工程師共享工作效率翻倍的秘密
返回頂部
上一篇
從零開始輕松掌握 API 集成:最佳實踐與常見挑戰
下一篇
SSIS 調用 eBay REST API 完整指南:OAuth 認證、數據讀寫與分頁處理
国内精品久久久久影院日本,日本中文字幕视频,99久久精品99999久久,又粗又大又黄又硬又爽毛片
99久久久国产精品| 日本中文在线一区| 日本一区二区三区电影| 91色在线porny| 国产一区二区福利视频| 免费成人av资源网| 亚洲成av人片在线观看无码| 一本大道久久a久久精品综合| k8久久久一区二区三区 | 国产色一区二区| 久久女同性恋中文字幕| 国产精品麻豆99久久久久久| 卡一卡二国产精品 | www日韩大片| 国产精品国产自产拍高清av| 亚洲欧美中日韩| 91亚洲精品乱码久久久久久蜜桃| 色婷婷综合久久久久中文| 精品国精品自拍自在线| 欧美成va人片在线观看| 久久久久久综合| 国产精品国产三级国产三级人妇| 日韩美女视频19| 日韩二区在线观看| 国产激情91久久精品导航| 亚洲综合一区二区精品导航| 精品久久久久久久久久久久久久久久久| 精品国产麻豆免费人成网站| 欧美精品v国产精品v日韩精品 | 成人性生交大片| 波多野洁衣一区| 欧美亚洲国产怡红院影院| 亚洲18女电影在线观看| 丁香激情综合五月| 日韩亚洲欧美在线| 精品一区二区综合| 91国偷自产一区二区开放时间| 色先锋资源久久综合| 欧美伊人久久久久久久久影院| 欧美喷水一区二区| 国产日韩综合av| 91在线免费看| 不卡的电影网站| 精品制服美女久久| 91精品国产福利在线观看| 欧美片在线播放| 久久婷婷综合激情| 一级特黄大欧美久久久| 成人网页在线观看| 久久精品一级爱片| 狠狠狠色丁香婷婷综合激情| 一本大道久久a久久精品综合| 国产肉丝袜一区二区| 国产一区二区三区精品视频| 欧美精品亚洲一区二区在线播放| 一区二区激情小说| 欧美日韩精品一区二区天天拍小说| 一区视频在线播放| 色欧美乱欧美15图片| 一区二区在线看| 国产精品久久久久久久午夜片| 欧美高清hd18日本| 国产激情一区二区三区四区| 久久一区二区三区四区| 91丨九色丨国产丨porny| 五月激情丁香一区二区三区| 国产蜜臀av在线一区二区三区| 国产不卡在线一区| 国产一区二区久久| 粉嫩13p一区二区三区| 成人国产免费视频| 日本韩国一区二区三区| 国模少妇一区二区三区| 国产日产精品1区| 亚洲精品视频自拍| 麻豆91精品91久久久的内涵| 国产精品亲子伦对白| 国产精品18久久久久| 久久综合av免费| 色呦呦国产精品| 亚洲欧洲一区二区在线播放| 日韩精品国产欧美| 亚洲女人的天堂| 精品久久久网站| 欧美日韩成人一区| 日韩电影在线免费看| 国产精品美女久久久久久久久| 欧美人xxxx| 欧美亚洲国产bt| 精品一区二区三区视频| 国产精品的网站| 欧美一区二区三区在线电影| 波多野结衣中文字幕一区 | 国内精品久久久久影院薰衣草 | 成人综合婷婷国产精品久久蜜臀| 日韩午夜av电影| 欧美亚洲国产bt| 欧美日韩卡一卡二| 欧美精品一二三区| 久久综合色鬼综合色| 国产女人水真多18毛片18精品视频 | 亚洲欧美一区二区三区国产精品 | 777欧美精品| 2023国产一二三区日本精品2022| 欧美肥妇bbw| 国产蜜臀av在线一区二区三区| 中文字幕在线观看一区| 亚洲超碰97人人做人人爱| 日av在线不卡| 99热精品国产| 99re视频精品| 亚洲国产经典视频| 日日噜噜夜夜狠狠视频欧美人| 亚洲女厕所小便bbb| 国产精品色呦呦| 国产精品久久久久久妇女6080 | 日韩精品一区二区三区在线| 中文字幕字幕中文在线中不卡视频| 亚洲人成网站影音先锋播放| 亚洲最新在线观看| 成人免费精品视频| 欧美成人r级一区二区三区| 国产精品乱子久久久久| 久久99久久精品欧美| 欧美一区二区视频观看视频| 亚洲另类一区二区| 秋霞影院一区二区| 激情久久五月天| 成+人+亚洲+综合天堂| 久久精子c满五个校花| 麻豆91在线播放免费| 亚洲欧洲在线观看av| 欧美日韩二区三区| 91在线观看免费视频| 在线视频亚洲一区| 国产精品黄色在线观看| 日韩在线播放一区二区| 99精品黄色片免费大全| 国产精品理论片在线观看| 91久久线看在观草草青青| 精品久久久久久久久久久久包黑料| 久久免费视频色| 成人免费观看视频| 综合久久久久久久| 91女人视频在线观看| ●精品国产综合乱码久久久久| 免费成人在线观看| 欧美一级高清片| 狠狠v欧美v日韩v亚洲ⅴ| 久久精品综合网| 91官网在线观看| 久久国产精品99久久久久久老狼 | www.99精品| 一区二区在线观看av| 欧美视频第二页| 国模一区二区三区白浆| 亚洲色图欧美偷拍| 精品免费国产二区三区| 97se狠狠狠综合亚洲狠狠| 国产在线不卡视频| 日本午夜一区二区| 伊人婷婷欧美激情| 亚洲狼人国产精品| 国产精品免费观看视频| 国产精品18久久久久久vr| 一区二区三区小说| 亚洲精品一区二区三区香蕉| 99久久99久久精品免费观看| 麻豆成人久久精品二区三区红| 亚洲色大成网站www久久九九| 欧美精品久久久久久久多人混战| 国产99久久久国产精品免费看| 琪琪久久久久日韩精品| 亚洲二区在线观看| 亚洲成人在线网站| 香蕉成人啪国产精品视频综合网| 成人欧美一区二区三区白人| 久久久久久久久岛国免费| xnxx国产精品| 国产精品网曝门| 国产视频一区二区三区在线观看| 久久亚洲综合色| 亚洲婷婷在线视频| 亚洲va欧美va国产va天堂影院| 日韩一区二区在线观看视频| 久久丝袜美腿综合| 亚洲私人影院在线观看| 免费在线成人网| 在线中文字幕不卡| 亚洲午夜一二三区视频| 91国偷自产一区二区三区观看 | 亚洲欧美偷拍卡通变态| 99久精品国产| 久久国产精品露脸对白| 亚洲欧洲av色图| 欧美mv和日韩mv的网站| 色婷婷综合久久久| 国产精品一区三区| 美腿丝袜亚洲三区| 五月天亚洲婷婷|