メインコンテンツへスキップ

Web APIを開発することは可能ですか?

コメント

70件のコメント

  • nkmt

    オンプレミスの販売管理システムがあったとします。
    お客様から在庫数などの問合せ電話対応作業を省力化する為にAPIを提供する事になったとします。
    経験がないので以下想像です。
    合ってますでしょうか。
    RESTAPIでJSONを返す、と仮定しての話です。

    言葉に間違いがあったらすみませんが
    実際にWEB APIのホストとして動かすとすればサーバーにIIS、Magic Enterpriseサーバー。
    ドメイン、固定IPも取得されていません。

    品名や在庫数をJSONで返すMagicのプログラムは
    バッチタスクでフォームのインターフェースタイプは、M=マージ
    マージ対象のファイルにはタグを埋め込んだJSONファイル

    実験はPOSTMANやCurlで行うのでしょうか。

    リクエストされてきた売上日などの期間範囲指定はGETPARAM等で行える。
    アドバイス頂けますと幸いです。
    よろしくお願いいたします。

  • Pu

    こんにちはPuです
    自分はapiの単体テストはpostmanで行っています。
    でわ~でわ~

     

  • nkmt

    Puさん ありがとうございます。

  • Pu

    こんにちはPuです
    自分はpostでmagicをcallするので(urlにパラメータの内容が見えるのがいやなので)
     magic側は普通のプログラムと同じようにパラメータの
    受取で行っています。(getparamを使用していません)
    でわ~でわ~

     

  • nkmt

    Puさん ありがとうございます。
    APIを呼び出してもらう側には、以下のようにしてもらうか、
    http://localhost/Magic3xScripts/mgrqispi.dll?APPNAME=MergeProg&PRGNAME=Test&ARGUMENTS=-
    N1013
    あるいは呼び出してもらう方にも検索条件等をJSONファイルで渡してもらう訳でしょうか?

  • 神楽彪

    一般的なAPIだと、問い合わせ側は在庫数のデータの取得ということになるので、APIにGETリクエストを行います。GETリクエストは取得したいデータの検索条件を、パスパラメーターまたはクエリパラメータで指定することが標準的です。なのでJSONファイルを渡すことはしないです。

    >>http://localhost/Magic3xScripts/mgrqispi.dll?APPNAME=MergeProg&PRGNAME=Test&ARGUMENTS=-
    N1013

    したがって上記のように問い合わせ側はクエリパラメータでリクエストします。この例を見るとlocalhostになっていますが、本当はドメイン名やIPアドレスになるかと思います。

    また例外はあるかと思います。一般的ではないですが、データ取得をGETではなくPOSTで用意し、問い合わせ側がリクエストボディにJSON(検索条件など)を埋め込むことは技術的には可能です。

     

  • Pu

    こんにちはPuです。
    GETでクエリーストリングに商品コードを渡して在庫数をJSONで返すのは簡単な実装だと思いますが
    自分はURLの中に送ったデータが含まれるため、どのような情報を送ったか第三者にばれやすい点
    がいやなので(ユーザーID,PASSWORDなども含んで送らないと 誰でもそのURIが分かれば
    在庫数を取得できるので)POSTで送信内容をリクエストボディに含めるのを使うようにしています
    受け取るMAGIC側は単純にパラメータPでで受けれるので以上
    でわ~でわ~

     

  • nkmt

    神楽彪様 教えて頂きありがとうございます。

    知らない事だらけでしたが、言葉の意味を調べて理解しているところです。
    GETのパスパラメータ、クエリパラメータ
    POSTのリクエストボディはまだ理解出来ておりません。

    昔後輩がMagicから郵便番号をWebで呼び出ししているのを思い出しました。
    改めてAPIって何?と思って郵便番号APIで検索かけましたらいいのがありました。
    郵便番号検索API - zipcloud
    これっておそらくGETなんでしょうね。外してましたらすみません。
    結果をJSONで返してくれるのだろうと思いました。
    APIを呼ぶ側を理解することにつながったのかもしれません。

    私はモバイルRIAはやっております。
    モバイルRIAからアプリを実行する場合、Webサーバーの
    C:¥inetpub¥wwwrootに置いてある〇〇.txtを指定しています。

    WebAPIはそれと似ているのでしょうね。
    モバイルRIAの場合は、モバイルクライアントがtxtファイル
    を読み込んでどのアプリのどの公開PG名を実行するか理解しますが、
    WebAPIの場合、
    http:・・・・に続いてPG名や集計範囲等を記述(クエリパラメータ)として指定するのでしょうね。

    クエリパラメータ上に、公開PG名も範囲指定等の項目名と値を書いてもらう。

    実行されるMagicのプログラム側が集計範囲等の値を入手し、
    バッチ処理でJSONファイルへ出力する。

    作られたJSONファイルをどのようにして呼び出し側に伝えるのか
    まだ理解していないのでもう1度このスレッドを拝見したいと思います。

  • nkmt

    余談ですが、モバイルRIAでtxtファイルを指定して
    実行するやり方は本来推奨されるやり方ではないのでしょうね。

  • nkmt

    Puさんこんばんは。
    Puさんの21:25の記事は行き違いで先程拝見しました。
    ありがとうございます。
    なぜPOSTにしておられるのか理解しました。
    POSTのリクエストボディはまだよくわからないので調べてみます。

    APIサーバー側としてはログインIDを受け取ったら、指定のメールアドレスに認証コードを送り返してあげるなど出来るといいのかもしれないですね。

    在庫数問合せを依頼されたら、商品大分類名一覧をJSONで返してあげるのか。

    そして大分類のリクエストが来たら、その分類の中の商品コードと品名と在庫数をJSONで返す事になるのか。

    1歩ずつチャレンジしてみます。

サインインしてコメントを残してください。