4D-JUG
Would you like to react to this message? Create an account in a few clicks or log in to continue.

【コンポーネント】HTTPServerコンポーネント

Go down

【コンポーネント】HTTPServerコンポーネント Empty 【コンポーネント】HTTPServerコンポーネント

投稿 by HARADA Koichi 2020-04-21, 1:25 pm

みなさんこんにちは。

4D v18のObject、Collection、Formula、すごくいいですね。
JavaScriptとか触ってて、これ4Dでもできたら良いのになーと思っていたことが実現してしまいました。

以前矢島さんが書かれていたメソッドチェーンもそうですし、メソッドをオブジェクト参照にして引数渡しできることもそうですし。

で、これらの使い方を勉強しながら、4DでREST APIサーバーを作るために使用するコンポーネントを作ってみました。

https://github.com/KoichiHaradaEndor/HTTPServer

実プロジェクトで使うために作りましたが、使用は自分自身でもこれからです。が、サンプルは動くようになっています。
使い方はWikiやテストデータベースで解説しています。

興味のある方、ぜひ動かしてみてください。でなんでも良いので、気が付いたこと教えていただければ幸いです。
*このコードはこうした方が良い
*コンポーネントにするなら引数チェックをもっと厳しく
*この英語間違ってる
などなど

-- 続く

HARADA Koichi

投稿数 : 14
登録日 : 2020/04/10

トップに戻る Go down

【コンポーネント】HTTPServerコンポーネント Empty Re: 【コンポーネント】HTTPServerコンポーネント

投稿 by HARADA Koichi 2020-04-21, 1:32 pm

簡単に使い方を

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

トップに戻る Go down

【コンポーネント】HTTPServerコンポーネント Empty Re: 【コンポーネント】HTTPServerコンポーネント

投稿 by HARADA Koichi 2020-05-08, 3:45 pm

みなさまこんにちは。

4D v18R3ベータが出て、クラス記法がサポートされました。

本コンポーネントもクラス記法を使用して書き直しました。
4D v18R3以降をお使いの場合は新コンポーネントをお試しください。
一応コンポーネントがWebサーバーになるケースも考慮して作りましたが、不具合ありましたら教えていただけるとありがたいです。

https://github.com/KoichiHaradaEndor/HTTPServer

HARADA Koichi

投稿数 : 14
登録日 : 2020/04/10

トップに戻る Go down

【コンポーネント】HTTPServerコンポーネント Empty Re: 【コンポーネント】HTTPServerコンポーネント

投稿 by HARADA Koichi 2020-05-08, 3:48 pm

新しい書き方は以下のようになります。

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

トップに戻る Go down

【コンポーネント】HTTPServerコンポーネント Empty Re: 【コンポーネント】HTTPServerコンポーネント

投稿 by Sponsored content


Sponsored content


トップに戻る Go down

トップに戻る

- Similar topics

 
Permissions in this forum:
返信投稿: 不可