【コンポーネント】HTTPServerコンポーネント
【コンポーネント】HTTPServerコンポーネント
みなさんこんにちは。
4D v18のObject、Collection、Formula、すごくいいですね。
JavaScriptとか触ってて、これ4Dでもできたら良いのになーと思っていたことが実現してしまいました。
以前矢島さんが書かれていたメソッドチェーンもそうですし、メソッドをオブジェクト参照にして引数渡しできることもそうですし。
で、これらの使い方を勉強しながら、4DでREST APIサーバーを作るために使用するコンポーネントを作ってみました。
https://github.com/KoichiHaradaEndor/HTTPServer
実プロジェクトで使うために作りましたが、使用は自分自身でもこれからです。が、サンプルは動くようになっています。
使い方はWikiやテストデータベースで解説しています。
興味のある方、ぜひ動かしてみてください。でなんでも良いので、気が付いたこと教えていただければ幸いです。
*このコードはこうした方が良い
*コンポーネントにするなら引数チェックをもっと厳しく
*この英語間違ってる
などなど
-- 続く
4D v18のObject、Collection、Formula、すごくいいですね。
JavaScriptとか触ってて、これ4Dでもできたら良いのになーと思っていたことが実現してしまいました。
以前矢島さんが書かれていたメソッドチェーンもそうですし、メソッドをオブジェクト参照にして引数渡しできることもそうですし。
で、これらの使い方を勉強しながら、4DでREST APIサーバーを作るために使用するコンポーネントを作ってみました。
https://github.com/KoichiHaradaEndor/HTTPServer
実プロジェクトで使うために作りましたが、使用は自分自身でもこれからです。が、サンプルは動くようになっています。
使い方はWikiやテストデータベースで解説しています。
興味のある方、ぜひ動かしてみてください。でなんでも良いので、気が付いたこと教えていただければ幸いです。
*このコードはこうした方が良い
*コンポーネントにするなら引数チェックをもっと厳しく
*この英語間違ってる
などなど
-- 続く
HARADA Koichi- 投稿数 : 14
登録日 : 2020/04/10
Re: 【コンポーネント】HTTPServerコンポーネント
簡単に使い方を
On Web Connectionデータベースメソッド
On Startupデータベースメソッド
HelloWorldプロジェクトメソッド
こんな感じで、HTTPメソッドとパスと4Dメソッドの組み合わせを登録していきます。
Nodeやってる方はお気付きですね、expressを参考にしています。
ではでは。
On Web Connectionデータベースメソッド
- Code:
C_TEXT($1;42;$3;$4;$5;46)
OnWebConnection($3;$4)
On Startupデータベースメソッド
- Code:
C_OBJECT($app_o)
$app_o:=new HttpServer()
$app_o.get("/hello"; Formula(HelloWorld))
$app_o.start()
HelloWorldプロジェクトメソッド
- Code:
C_OBJECT($1;$req_o)
C_OBJECT($2;$res_o)
C_OBJECT($3;$next_o)
$req_o:=$1
$res_o:=$2
$next_o:=$3
$res_o.send("Hello World")
こんな感じで、HTTPメソッドとパスと4Dメソッドの組み合わせを登録していきます。
Nodeやってる方はお気付きですね、expressを参考にしています。
ではでは。
HARADA Koichi- 投稿数 : 14
登録日 : 2020/04/10
Re: 【コンポーネント】HTTPServerコンポーネント
みなさまこんにちは。
4D v18R3ベータが出て、クラス記法がサポートされました。
本コンポーネントもクラス記法を使用して書き直しました。
4D v18R3以降をお使いの場合は新コンポーネントをお試しください。
一応コンポーネントがWebサーバーになるケースも考慮して作りましたが、不具合ありましたら教えていただけるとありがたいです。
https://github.com/KoichiHaradaEndor/HTTPServer
4D v18R3ベータが出て、クラス記法がサポートされました。
本コンポーネントもクラス記法を使用して書き直しました。
4D v18R3以降をお使いの場合は新コンポーネントをお試しください。
一応コンポーネントがWebサーバーになるケースも考慮して作りましたが、不具合ありましたら教えていただけるとありがたいです。
https://github.com/KoichiHaradaEndor/HTTPServer
HARADA Koichi- 投稿数 : 14
登録日 : 2020/04/10
Re: 【コンポーネント】HTTPServerコンポーネント
新しい書き方は以下のようになります。
- Code:
C_OBJECT($cs_o;$app_o)
$cs_o:=import HttpServer // コンポーネントのクラスストアを入手
$app_o:=$cs_o.HttpServer.new(Web Server) // HttpServerオブジェクトを作成
$app_o.get("/hello"; Formula(HelloWorld)) // ルートを登録
$app_o.start() // Webサーバー開始
HARADA Koichi- 投稿数 : 14
登録日 : 2020/04/10

» 【コンポーネント】Shift_JISに変換できない文字の有無をチェックする
» 【コンポーネント】Cron
» 【コンポーネント】メール送信
» 【コンポーネント】ジオローケーション
» 【コンポーネント】かんたんメール送信
» 【コンポーネント】Cron
» 【コンポーネント】メール送信
» 【コンポーネント】ジオローケーション
» 【コンポーネント】かんたんメール送信
Permissions in this forum:
返信投稿: 不可
|
|