このシンプルな例をREST APIで書き換えるとこんな感じです。

まずはCSPファイルです。

<html>
<body>
<!--フォームの記述-->
<form name="f1">
<input type="text" value="" name="text1">
<input type="button" value="test" onclick="runMyRoutine();">
</form>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<!-- ボタンクリックで最初に呼び出されるJavascript関数 -->
<script language="javascript">
function runMyRoutine() {
  axios.get('http://localhost:8080/api/user/getMessage/Hiroshi')
  .then(response => {
   console.dir(response)
   self.document.f1.text1.value = response.data.Message
  })
  .catch(error => {
    console.log(error)
  })
  }
</script>
</body>
</html>


次に呼び出されるREST APIのクラスです。

Class Samples.API Extends %CSP.REST
{

Parameter CONVERTINPUTSTREAM = 1;

XData UrlMap
{
<Routes>
  <Route Url="/getMessage/:name" Method="GET" Call="GetMessage"/>
</Routes>
}

ClassMethod GetMessage(pName As %String) As %Status
{
  set status = $$$OK

  try {
	
    if $data(%request) {
      set %response.ContentType="application/json"
      set %response.CharSet = "utf-8"
    }
    set return = {}
    set return.Message = "Hello "_pName
    write return.%ToJSON()
	  	  
  }
  catch e {
		
    set status = e.AsStatus()
		
  }
  
  quit status
}

}


RESTアプリケーションの設定例

GoogleのコンソールUIが劇的に変わっており、ここの記述と実際の現時点のUIの対比に苦労しました。
時間と共に変わってしまうのでなかなか難しいところですね(相手がクラウドサービスの場合は特に)

中でも

テストユーザ で +ADD USERS から xxxxxx@gmail.com を追加して [保存して次へ] をクリック

この部分がどれに対応するのかなかなかわかりませんでした

プロジェクトのページの左ペインから対象を選ぶと、+ADD Userというボタンが表示されます。

以前のバージョンでは(2023.x)ではWindowsの場合は、pathPrefixをつけないと接続できなかった記憶があります。

その時もMac版では必要なかったので、2024からWindows版もそれに合わせたということですかね

(またはWindows版ではその追加設定がたまたま抜けていたか)

>私のサンプルは、.Netの標準ライブラリーであるSystem.IO.FileStreamを使っています。

>なので同じRead,Writeメソッドでも中の実装は違っていると思います。

これは全然関係ないコメントでした。

バージョンはいくつを使っていますか?
 

私が使用しているのは、

2021.2 (Build 650U)

です。

新しいバージョンを使うといろいろと改善されていることがあったりするので、是非最新を試すようにしてみてください。

でもあんまり巨大なファイルを一度で読み書きするのは結局ディスクの読み書きやプロセスのメモリーのアロケーションやいろいろなことが絡んでくるので一筋縄ではいかないこともありそうです。

kobataさん
ご視聴ありがとうございました。

私のサンプルで2M以上のファイルでもOKでした。
私のサンプルは、.Netの標準ライブラリーであるSystem.IO.FileStreamを使っています。

なので同じRead,Writeメソッドでも中の実装は違っていると思います。