これは InterSystems FAQ サイトの記事です。
以下の様なCurl コマンドで送信したファイルを受け取るRESTサービスを作成する方法を紹介します。
curl -X POST "http://localhost/api/upload?a=123&b=999" -F file=@"C:/temp/a.csv"
BashBash
クライアントからPOSTされたファイルを受け取ってサーバーに保存するRESTサービスは以下の様に作成します。
Class User.MyREST Extends %CSP.REST
{
Parameter HandleCorsRequest = 1;
XData UrlMap
{
<Routes>
<Route Url="/uploadimg" Method="POST" Call="readMimeData" />
</Routes>
}
ClassMethod readMimeData() As %Status
{
set upload=$g(%request.MimeData("csvfile", 1))
set fname=%request.MimeData("csvfile",1).FileName
set file=##class(%File).%New("c:\temp\"_fname)
do file.Open("NWU")
do file.CopyFrom(upload)
set st = file.%Save()
if st {
write fname_" アップロード完了!!"
} else {
write fname_" アップロード失敗"
}
do file.Close()
quit $$$OK
}
}
ObjectScriptObjectScript
このRESTサービスをクライアントから呼び出すために、以下の様な設定を行います。
管理ポータル>システム管理>セキュリティ>アプリケーション>ウェブ・アプリケーション>新しいウェブ・アプリケーションを作成の所で上で作成したRESTディスパッチクラスを登録します。
名前: /api/upload
ネームスペース: そのクラスを保存したネームスペース
RESTを有効にして、ディスパッチクラスにUser.MyRESTを設定する
この設定はAPIを呼び出して実行することもできます。
zn "%SYS"
set sec = ##class("Security.Applications").%New()
set sec.Name = "/api/upload"
set sec.NameSpace = "USER"
set sec.DispatchClass ="User.MyREST"
set sec.AutheEnabled = 96
set status = sec.%Save()
ObjectScriptObjectScript