Web APIを開発することは可能ですか?
要するにhttpリクエストを受けて、JSONやXMLでレスポンスできるような機能はありますか?
-
こんにちはPuです。
xmlをレスポンスする仕組みはwebマージ等で行っていますのでブローカー経由で可能です。
すみませんjsonが返却できるかは存じておりません。
でわ~でわ~ -
神楽彪さん、Puさん、
はい、Jsonでも返すことができますよ。
Magicで作るWeb APIは最高ですよ。ChatGPTをかませればすべてが一瞬で作成できます。
-
丹田さんこんにちはPuです。
xmlはプレーンなtextのマージなのでhtmlのマージと同じなので理解して使用していましたが
magicでjsonをエンコードする関数を知らなかったのでいつもpythonでエンコードしていました
magicでjsonをエンコード出来るんですね、もしよろしければ方法をお教え頂けませんでしょうか?
でわ~でわ~ -
Puさん、tandaさん、ご回答ありがとうございます。
受けたリクエスト(URL)とMagic xpaのバッチ処理を紐づけ、そのバッチ処理の戻り値でJSONを返すみたいな感じになるのでしょうか?
レスポンスのステータスコードを制御できるかなど、まだまだ気になるところがたくさんございますので、Magic xpaでの具体的な手順などがまとめられたWebサイトやドキュメントがあれば教えていただきたいです。
お手数ですがよろしくお願いいたします。
-
Puさん、
> xmlはプレーンなtextのマージなのでhtmlのマージと同じなので理解して使用していましたが
Jsonもプレーンなテキストなので、まったく同じ方法でできますよ。
ちなみにちょうど今、私の連載コーナーでそのことを解説していく予定でいます。
数回に渡って詳しく解説しますので期待していてくださいね。 -
丹田さんこんにちはPuです。
jsonはプレーンなtextではレスポンス出来ないと思います。
httpのリクエストに対して返却する場合json形式のtextをエンコードして返却するはずですが
そしてレスポンスを受け取った側はデコードしないとアプリ内で使用できなかったと認識しています。
普段webapiを作成しているのですがjson形式で受け取ってデコードしアプリ内で使用し
結果をjson形式(エンコードして)で返却しています。
それがmagicではプレーンなtextでマージのみ(htmlマージと同じ仕組み)で返却出来るなら
それこそ目から鱗です。恐るべしmagic
でわ~でわ~ -
神楽彪さん、
> 受けたリクエスト(URL)とMagic xpaのバッチ処理を紐づけ、そのバッチ処理の戻り値でJSONを返す
> みたいな感じになるのでしょうか?はい、まったくその通りです。
ステータスコードの制御に関してはMagicにいろいろな関数が用意されていますので、確認したうえで試してみてください。
-
Puさん、
> それがmagicではプレーンなtextでマージのみ(htmlマージと同じ仕組み)で返却出来るなら
> それこそ目から鱗です。恐るべしmagicはい、目から鱗ですね。私も最初は感動しました。
連載コーナーで詳しく解説していきますので、期待していてくださいね! -
Puさん、
Magicが吐き出すJSONファイルを、ブラウザで受け取って表示しただけのスクリーンショットを掲載します。何も加工はしてないので、そのままのプレーンなテキストの表示ですが、データが正常に届いていることが確認できます。

-
ブローカーあたりを調べて、何とかHTTPリクエストからバッチ処理を実行するところまでできました。
ただ、"No output returned from remote program" (-11)となってしまいます。
バッチプログラムの戻り値は何を設定すれば良いのでしょうか?教えてください。
-
神楽彪さん、
バッチの戻り値は、マージのフォーム特性でタグの紐付けを行ってやればいいです。
-
tandaさん
ありがとうございます。
マージというものすら知らなかったのですが、入出力ファイルがここで絡んでくるわけですね。
タグが何なのか、テンプレートファイルというのも必要みたいですが、何もわからないのでその辺を勉強しようと思います。
-
神楽彪さん、
もしよろしければ、うちのセミナーの1日コースを受講してみてください。
https://www.tandacomp.com/
Magic モバイル Web マージアプリ開発セミナー(1日)「費用」対「効果」の問題にはなりますが、効果を優先させるのであれば有益だと思います。
タイトルは「モバイル」となっていますが、Windowsでも同じです。 -
AIがこれだけ進化してくると、Magicのマージ機能をWeb APIサーバとして活用するという手法がダントツで世界の最先端を行きそうな気がしますね。
これまではクライアント側のコードをエディタでコツコツ書く必要があったのですが、今ではどんな複雑なコードでもAIがものの数秒で書いてくれますので、マジシャンにとってはバッチタスクの書き方だけ知っていればいいということになります。
1990年代同様、Magicがまた一世を風靡しそうな気配になってきましたね。
-
丹田さんこんにちはPuです。
ブラウザで表示された内容は単なるtextではないでしょうか
JSONとはJavaScript Object Notation)すなわちオブジェクトなので
text形式で記述されたjson形式の文字列をオブジェクトに変換してレスポンスしないと
受取側でjsonとして認識できないのでは?単なるtextとjsonは異なると思うのですが
ちなみに丹田さんが作成されたjsonのresponceをjavascriptで受取、処理できましたでしょうか?
質問ばかりですみません。
それが出来たらサーバーサイドのweb apiは全てmagicに置き換えられるので
フロントはvue3でサーバーサイドがmagicと言う構成(今現在サーバーサイドをpythonで作ってるので)
に置きかられるので
でわ~でわ~ -
Puさん、
> ちなみに丹田さんが作成されたjsonのresponceをjavascriptで受取、処理できましたでしょうか?
はい、問題なくできております。
-
Puさん、
JSONファイルそのものは単なるテキストですよ!
参考までにChatGPTに聞いてみました。以下はそのやり取りです。
私:JSONファイルの中身は単なるテキストファイルですか?
ChatGPTの返事:はい、JSONファイルは単なるテキストファイルです。JSON(JavaScript Object Notation)はデータを保存および交換するための軽量のデータ形式です。JSONファイルは以下の特徴を持ちます:
1. **人間が読みやすい**:JSONは構文がシンプルで、テキストエディタで開いて内容を確認できます。
2. **キーと値のペア**:データはキーと値のペアで表現されます。例:`"name": "John"`
3. **データ構造の表現**:オブジェクト(キーと値のペアの集まり)や配列(値のリスト)を使用してデータを構造化できます。以下は簡単なJSONの例です:
```json
{
"name": "John",
"age": 30,
"isStudent": false,
"courses": ["Math", "Science"],
"address": {
"city": "New York",
"zip": "10001"
}
}
```このJSONデータは、`name`、`age`、`isStudent`、`courses`、`address`というキーを持つオブジェクトを表しています。
-
丹田さんこんにちはPuです。
質問ばかりで恐縮です。
それは単純なマージでしょうか?
そっれともjson形式で記述された文字列をmagicの関数(DataViewToJSON)かなにかで
オブジェクトに変換されてresponceされたのでしょうか
でわ~でわ~ -
Puさん、
> それは単純なマージでしょうか?
はい、単純なマージです。Magicの関数は何も使っていません。
-
丹田さんこんにちは、Puです。
色々質問に回答頂きありがとうございます。
普段xmlマージは多用しているので試してみたいと思います。
でわ~でわ~ -
こんな感じでテンプレートファイルを作成するのと、
[
<!$MGREPEAT>
{"id": <!$MG_id>, "name":"<!$MG_name>", done: "<!$MG_done>" },
<!$MGENDREPEAT>
]バッチタスク内でRqHTTPHeader('Content-type: application/json')を実行するとjson形式でレスポンスすることができました。
ただ、論理値がtrueでほしいのにTrueときたり、文字に書式分のスペースが入ったり、と使い勝手が悪い状態です。
バッチ処理内でjsonに変換したのち、テンプレートファイルには
<!$MG_json>という記載だけで済むようになればうれしいのですが、何か良い方法がないですかね・・・ -
tandaさん、セミナーの件などありがとうございました。
また検討いたしますね。
-
神楽彪さん、
HTMLやJavaScriptの知識がおありであれば、セミナーの受講は必要ないと思いますよ。
あとは、ブラウザで戻るボタンが押されたときの処理とか、画面がリロードされたときの対処法とか、クッキーの使い方とか、そんな内容です。
ちなみに、私のところでは「Content-type: application/json」をわざわざ指定しなくても、ブラウザがJSONと認識してくれています。Chromeのデベロッパーツールで確認しましたので間違いないです。
-
神楽彪さん、
ちなみに、コミュニティ共有ボックスのほうに連載のご案内を掲載しましたので、よろしければお越しください。コミュニティ共有ボックスはいわゆる雑談室なのですが、どういうわけかその部屋をフォローしている人が少ないみたいです。
https://muforum.magicsoftware.co.jp/hc/ja/community/posts/34662778119961
-
神楽彪さん、
英語フォーラムのほうでもご質問を拝見しました。
あちらでの回答も、Puさんの回答とほぼ同じような内容でしたね。
その後、うまくいきましたか?
-
tandaさん、おはようございます。
まだいろいろと試行錯誤中です。blob2reqは知らなかったので、これから試してみようとします。
-
神楽彪さん、
ちなみにお伺いしますが、MG_doneやMG_jsonはどんな用途で使用されているのですか?
-
とりあえずnext.jsでtodoリストを作って、WEB APIとしてのmagic xpa使い勝手を探っていました。
-
神楽彪さん、
使い勝手のテストですね。わかりました。
-
神楽彪さん、こんにちはPuです。
nextではなくnuxtではないでしょうか(タイプミスだと)
私も最近nuxt3の勉強を始めました。色々情報upされる事期待します。
でわ~でわ~
サインインしてコメントを残してください。
コメント
70件のコメント