外界への扉、HTTPClient
どうも、エイタです・・・。
PowerBuilder という狭い世界に閉じ込められ、閉塞感に息を詰まらせているとお感じのあなた・・・。
待ちなさい! PowerBuilder の世界はそんなに狭くないぞ。
それに、PowerBuilder にだって外の世界へ飛び出すための扉があるんだ!
外へ? でもこわい・・・。
これまでも HTTP クライアントの役割を果たすオブジェクト (inet オブジェクト) がありましたよね。でも少々複雑で使い勝手も悪く、「外の世界と繋がりたい」と望む僕らの心をへし折るほどのものでした (HTTPS にも対応していなかった!)。
しかし、PowerBuilder 2017 では新たに HTTPClient オブジェクトという RESTful で Useful な機能が追加されたんです!
REST というのは Web サービスの設計モデルで “REpresentational State Transfer” の略です。 「モデル」ということからわかるように、「こういうルールを守ってサービスを作りましょう」といったような考え方で、そのルールを守らなければ RESTful とは呼べないんです。
ルールの内容は「インターフェイスの統一」や「URL の命名のしかた」などシンプルでわかりやすくするためのものです。 ルールを守らなくても REST っぽいサービスを作ることができますけど、統一された考え方のもとで作られていれば、いざサービスを利用するって時に覚えなきゃいけないことが減りますよね。 うん、すばらしい思想です。
さあ、怖がらずに一歩踏み出してみましょう!
それって簡単なの・・・?
さきほども述べましたが、そんな RESTful API を利用するための機能が PowerBuilder に追加されました。それが HTTPClient や RESTClient、JSONParser などのオブジェクトです。 今回は HTTPClient をサラっと触れたいと思います。
HTTPClient は HTTP リクエストの送信、HTTP レスポンスの受信をするためのオブジェクトです。 基本的にこれひとつで Web サービスとのやり取りができます。
早速使ってみましょう。
Integer li_rc String ls_string HttpClient lnv_HttpClient lnv_HttpClient = Create HttpClient // GET メソッドでリクエストを送信 li_rc = lnv_HttpClient.SendRequest("GET", "http://demo.appeon.com/PB/webapi_client/employee/102") // レスポンスデータを取得 if li_rc = 1 and lnv_HttpClient.GetResponseStatusCode() = 200 then lnv_HttpClient.GetResponseBody(ls_string) end if
お気づきの方もいらっしゃるかと思いますが、マニュアルからのコピペです。 僕は極度のめんどくさがり屋なので、このように効率のいいプレゼン方法を瞬時にひらめく能力を身に付けているんです (コメントを翻訳する手間は省かなかったので「手抜き」ではない)。
ごらんの通り “GET” メソッドでデータを取得する処理です。 とてもシンプルな例で、やっていることはリクエストの送信とレスポンスボディの取得のみです。 結果 (ls_string の内容) は以下の通り。
[{"empId":102,"fname":"Rose","lname":"sssssss","street":"49 East Washington Street","city":"Needham","state":"MA","zipCode":"02192 ","phone":"6175553985"}]
* API の結果は公開当時のものです。
JSON 形式の文字列でした。 (JSON の取り扱いについては他に便利なオブジェクトがあるのですが、その紹介はまたの機会に。)
実装は本当に簡単ですよね。 ステータスコードの判定とか、少しは HTTP の知識が必要になると思いますが、これまで Web に触れたことがなかった人でも、なんとなくやっていることはわかるんじゃないでしょうか? マニュアルにはこのほかにも Example がいくつかあり、コピペで利用できるので試してみることをお勧めします!
ちなみに HTTPClient オブジェクトはもちろん POST / GET / PUT / DELETE の各メソッドが利用できます。 REST を名乗るからには当然です。 これまでのバージョンで利用されていた inet オブジェクトでは対応するメソッドが POST と GET のみでしたので RESTful API にお近づきになりたくても無理だったんですね。 inet ちゃんとは今日でお別れかな・・・。
HTTPClient で RESTful Life!
Web API を利用することにより、クライアント側の Rich な GUI は PowerBuilder で、そして Database からのデータの取得や更新は Web API に任せる!といったことができます。 こうすることでクライアント端末から Database へ直接 Access することがなくなります。 ってことは Database への接続情報もクライアントで持つ必要はなくなりますし、Security の面でも Safety ということですよね!
ほらほら、なんだかワクワクしてきませんか? あなたの目の前に扉があるんです! たまたまこの Blog を見て 「PowerBuilder って、まだあったんだ・・・」なんて思っている Everyone もこれを機に Try してみませんか?
HTTPClient という翼を背に、みんなで広い世界へはばたきましょう!
Let’s open the door and fly out!
以上、エイタでした。
筆者の意向により、外の世界とつながるイメージを表現するため英単語を多めに記載しております。多少読みにくい文章になっていることを深くお詫びします。