質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

2回答

737閲覧

CodeIgniterを使用したWebアプリでのAPI呼び出しの場所

hyugaji

総合スコア1

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2022/03/03 09:20

概要

現在、業務にてCodeIgniterで構築されたWebアプリケーションのPDFダウンロード処理を作成しております。
実現したい処理は、ブラウザからダウンロードボタンを押下すると、PDFがダウンロードできるといったものです。
PDFファイルは他社製品のCloud上にあり、用意されたWeb APIを呼び出して取得いたします。
このWeb APIをサーバサイド・クライアントサイドのどちらで呼び出すのが良いのか悩んでおります。
具体的には、以下になります。

パターン1. サーバサイドのPHPでAPIを呼び出し、取得したPDFを返却する
パターン2. クライアントサイドのJavaScriptでAPIを呼び出し、直接PDFを取得する

CodeIngniterでのAPI呼び出しを検索すると、パターン1の方法がほとんどでした。(curlを使用されているもの)
しかし、上位SEから「本WebアプリケーションはAWS上にあり、なるべく通信料を抑えたい」と要望があり、パターン2も検討しております。

【パターンイメージ】
パターンイメージ

質問

以下、質問になります。

  1. パターン1・パターン2のどちらが一般的なのでしょうか。
  2. パターン1・パターン2のそれぞれのメリット・デメリットはございますでしょうか。

初歩的なことかもしれませんが、Webアプリケーションの開発経験が乏しく、ご助力お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

用意されたWeb APIを呼び出して取得

このWebAPIを利用する際に認証キーなど秘匿が必要なものが必要であったり、IPアドレスなどでアクセス元が制限されている場合はパターン1しか選択肢がありません。

それ以外であれば「他社製品のCloud」の利用規約等契約内容に抵触しないことが前提になりますが要件次第でどちらでもいいのではと思います。

ダウンロードのログ残したいとか、ダウンロードのエラーを補足したいとか、「他社製品のCloud」からダウンロードしていることを秘匿したいとかからパターン1

「他社製品のCloud」へのアクセスを作成されているシステム以外からアクセスされても何の問題も無い(どこかの掲示板などにURLやダウンロードスクリプトを貼り付けられてだれてもダウンロード可能でも問題ないとか)のであればパターン2

投稿2022/03/03 09:39

Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hyugaji

2022/03/03 10:17

早速のご回答ありがとうございます。 パターン1・パターン2の具体的な判断基準をいただき、ありがとうございます。 とても分かりやすい内容でした。 今後検討する際にも参考させていただきます。 「IPアドレスなどでアクセス元が制限」 今回はこちらが該当したため、パターン1で実装していこうと思います。 ありがとうございました。
guest

0

結局同じリクエストを送信し、同じレスポンスを返すことになるので、「通信量」に変化はないと思います(私見なので、実地検証してください)

なので、あとは利用する側の都合で好きにしてください・・・ということになると思います。

投稿2022/03/03 09:39

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hyugaji

2022/03/03 10:04 編集

早速のご回答、ありがとうございます。 「あとは利用する側の都合で好きにしてください」 ありがとうございます。 どちらかが絶対にダメということはない旨、了解いたしました。 他の回答者様から、判断基準をいただきましたので、アプリに合わせて設計したいと思います。 また、1点、よろしければご確認したいことがあります。 「結局同じリクエストを送信し、同じレスポンスを返すことになる」とございますが、App Serverに絞って考えた際に、パターン1ではPDF Serverにリクエストを送信しておりますが、パターン2ではしておりません。 PDFファイルのサイズが大きかった場合、その分通信量に差があるのではと思ったのですが、いかがでしょうか。 素っ頓狂なことを言ってしまっておりましたら、申し訳ございません。
m.ts10806

2022/03/03 10:09 編集

文章だけでは構成把握に難があるように思いました。 既に解決とされたようですし、どうしてもという場合は別質問にされたほうが良いです(結局は実地検証してくださいということになりますが) リクエストの頻度などにもよるでしょうしね。
hyugaji

2022/03/03 10:21

「文章だけでは構成把握に難があるように思いました。」 情報が足らず、申し訳ございません。 今回行き詰った点は解決できましたので、後日お時間ある際に確認したいと思います。 m.ts10806さんのご回答もとても為になりました。ありがとうございました。
m.ts10806

2022/03/03 10:29

いえ、インフラとかサーバー構成になるので、やはり図示がないと関係性見えないなと思った次第です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問