<span>推奨読書: </span>RESTful それは何ですか? RESTful アーキテクチャを一緒に理解しましょう <span> API 開発についてより深く理解しましょう </span><br><span> この投稿は、PHP と API 開発についてあまり知らない人向けに書かれています </span><br><span> 1. まず、2 つの質問に簡単に答えてください: </span><br><span>1. PHP でクライアントを開発できますか? </span><br><span>答え: いいえ、PHP はスクリプト言語であり、B/S アーキテクチャまたは C/S アーキテクチャの S 部分、つまりサーバーの開発を完了する責任を負っています。 (GTK と WinBinder については心配しないでください) </span><br><span>2. サーバー開発の最初の選択肢として PHP を選択する理由は何ですか? </span><br><span>答え: クロスプラットフォーム (UNIX、LINUX、WINDOWS、Mac OS で実行可能)、低消費電力 (PHP はかなりのシステム リソースを消費します)、高い操作効率 (比較的に)、MySQL の完璧なパートナーです。無料のオープンソース...</span><br><span>2. PHP を使用して API (<strong>Application</strong> プログラミング インターフェイス、アプリケーション プログラミング インターフェイス) を開発する方法は? </span><br><span>APIに取り組んだことがある人は、実際のAPIの開発はWEBの開発よりも簡単であることを理解しているはずですが、APIは実際にはページをレンダリングせずにデータを出力するため、MVCはありません(APIにはMしかありません) C) 、</span><br><span>1. WEB 開発と同様に、最初にこれらのパラメータがクライアントによって渡される必要があります (おそらく GET または POST)。これは開発チームによって合意される必要があります。定式化される。 </span><br><span>2. パラメーターを使用して、タスクの進行状況の更新、アプリ内購入、ゲーム終了時のデータ送信など、アプリケーションの要件に従ってデータ処理を完了します。 </span><br><span>3.処理された後、クライアントに返されます。ミッション ステータス、アプリ内購入結果、プレイヤー情報など、使用する必要がある関連データ。データをクライアントに返すにはどうすればよいですか? </span><br><span>JSON、XML、TEXT などの直接出力フォーム</span><br><span>4. クライアントは、返されたデータを取得した後、クライアント上でローカルにユーザーと対話します </span><br><span>一時的に書かれた簡単な API の例: </span><code></code><ol> <li><span><?</span><span>php</span></li><li><span>$ 出力</span><span>=</span><span>配列</span><span>();</span></li><li><span>$a </span><span>=</span><span> </span><span>@$_GET</span><span>[</span><span>'a'</span><span>]</span><span> </span> <span>?</span><span> $_GET</span><span> [ </span><span>'a'</span><span>]</span><span> </span><span>:</span><span> </span><span>''</span><span>;</span></li><li><span>$uid </span><span>=</span><span></span><span>@$_GET</span> <span>[</span><span>'uid'</span><span>] </span> <span> </span><span>?</span><span> $_GET</span><span>[</span><span>'uid'</span><span>]</span><span> </span><span>:</span><span> </span><span>0</span><span>;</span></li><li></li> <li> <span></span><span>if</span><span></span><span>(</span><span>空</span> <span>(</span><span>$a</span><span>)) </span><span> </span><span>{</span></li><li><span> gt;</span><span>NULL</span><span>,</span><span></span> <span>'info'</span><span>=> </span>exit <span></span>(<span> </span>json_encode<span></span>(<span> </span>$output<span></span>));<span></span><span></span> <span></span>}<span></span><span></span><span></span> <span></span> // インターフェースを取得します </li><li><span></span> <span></span>if<span></span> <span> </span>(<span></span>$a <span> </span>==<span></span> </li><li>'get_users'<span></span>)<span></span></li><li>{</li><li><span></span> <span> </span></li>(<li><span>$uid </span><span>==</span><span> </span><span>0</span><span>) </span><span> </span><span>{</span><span></span><span> $output </span><span> =</span><span>array</span></li>(<li><span>'data'</span><span>=> </span></li>NULL<li> <span>,</span><span> </span><span>'info'</span> <span>=></span><span> 'uid は null!' </span>exit <span></span>(<span> </span>json_encode<span> </span>(<span></span>$output<span></span>));<span></span> </li> <li> <span></span>}</li> <li> <li> <span> </span><span>// $mysql がデータベースであると仮定します </span> </li> <li> <span> $mysql </span><span>=</span><span> array</span><span>(</span> </li> <li> <span> </span> <span>10001</span><span> </span><span>=></span><span>配列</span><span>(</span> </li> <li> <span> </span>=><span></span>5<span></span>,<span></span><span></span> </li> <li> <span>=></span><span> </span><span>『シャインX』</span><span>,</span><span></span> </li> .com'<li> <span>,</span><span> </span><span> </span><span>' qq' = & gt; </span><span>979137</span><span>、</span><span></span> </li> <li> <span>' gold'</span><span> = & gt; 1500</span><span>、</span><span></span><span></span> </li>'powerPlay'<li> <span> = & gt; </span><span> 配列 array </span><span>(</span><span>'2xp'</span><span>=></span> </li>12<li> <span>,</span><span>'gem'</span><span>=> ;</span><span>5</span><span> ,</span> </li>'キー<li> <span>= ></span><span>5</span><span>,</span><span>'胸'</span><span>=> </span>'宝石'<span></span>=><span></span>配列<span></span>(<span></span>'赤'<span></span>=><span></span>13<span> </span>、<span></span> '緑'<span></span>=> <span></span>8<span> </span>,<span></span>'黄'<span></span>=><span></span>17<span></span>)、<span></span><span></span> 4<span></span>、<span></span><span></span> =></li> <li>1377123144<span></span> 、<span></span><span></span> <span></span>'exp'<span></span>=><span></span>16758<span></span>、<span></span><span></span>)、<span></span><span></span> <span></span>10002<span></span> <span></span>=> <span></span>'uid'<span></span>=><span></span>10002<span></span>,<span></span><span> </span> <span></span> </li> <li>'elva'<span></span>、<span></span><span></span>メール'<span></span>=><span></span>'elva@ezhi.net'</li> <li>、<span></span><span></span> <span></span> => ><span></span>1<span></span>,</li> <li>「宝石」><span></span>120<span></span>, <span></span>「ビンゴ」<span></span>=> <span></span>「チェスト」</li> <li> =><span></span>8<span></span>)、<span></span> </li> <li> <span> </span><span>'宝石'</span><span>=></span><span> 配列</span><span>(</span><span>'赤'</span><span>=></span><span>13</span><span>,</span><span>'緑' </span><span>=></span><span>3</span><span>、 </span><span>'青'</span><span>=></span><span>8</span><span>、</span><span>'黄色'</span><span>=></span><span>17</span><span>)、</span> </li> <li> <span> </span> <span>'ctime'</span><span>=></span><span>1376523234 </span><span>,</span> </li> <li> <span> </span><span>'lastLogin'</span><span>=></span><span>1377123144</span><span>,</span> </li> <li> <span> </span><span>'レベル'</span><span>=></span><span>112</span><span>,</span> </li> <li> <span> </span><span>' exp'</span><span>=></span><span>167588</span><span>,</span> </li> <li> <span> </span><span>),</span> </li> <li> <span> </span><span>10003</span><span> </span><span>=></span><span> array</span><span>(</span> </li> <li> <span> </span><span>'uid' </span><span> </span><span>=></span><span> </span><span>10003</span><span>,</span> </li> <li> <span> </span><span>'vip'</span><span> </span><span>=></span> <span> </span><span>5</span><span>,</span> </li> <li> <span> </span><span>'ニックネーム'</span><span> </span><span>=></span><span> </span><span>「リリー」</span><span>,</span> </li> <li> <span> </span><span>「メール」</span><span> </span><span>=></span><span> </span> <span>「Lily@ezhi.net」</span><span>、</span> </li> <li> <span> </span> <span>'qq'</span><span> </span><span>=></span><span> NULL</span><span>,</span> </li> <li> <span> </span><span>'ゴールド'</span><span> </span><span>=></span><span> </span><span>1541</span><span>,</span> </li> <li> <span> </span><span>「パワープレイ」 </span><span>=></span><span> array</span><span>(</span><span>'2xp'</span><span>=></span><span>2</span><span>,</span><span>'gem'</span><span>=></span><span>112</span><span> 、</span><span>「ビンゴ」</span><span> =></span><span>4</span><span>,</span><span>'キー'</span><span>=></span><span>7</span><span>,</span><span>'チェスト'</span><span>=></span><span>8</span><span>)、</span> </li> <li> <span> </span><span>の宝石'</span><span> </span><span>=></span><span> array</span><span>(</span><span>'赤'</span><span>=></span><span>13</span><span>,</span><span>'緑'</span><span>=></span><span>3 </span><span>、</span><span>'ブルー'</span><span>=></span><span>9</span><span>,</span><span>'黄色'</span><span>=></span><span>7</span><span>)、</span> </li> <li> <span> </span><span>'ctime'</span> <span> </span><span>=></span><span> </span><span>1376523234 </span><span>,</span> </li> <li> <span> </span><span>'lastLogin'</span><span>=></span><span> </span><span>1377123144</span><span>,</span> </li> <li> <span> </span><span>「レベル」</span><span> </span><span>=></span><span> </span><span>10</span><span>,</span> </li> <li> <span> </span><span>'exp'</span><span> </span><span>=></span><span> </span><span>1758</span><span>,</span> </li> <li> <span> </span><span>)、 </span> </li> <li> <span> </span><span>);</span> </li> <li><span> </span></li> <li> <span> $uidArr </span> <span>=</span><span> 配列</span><span>(</span><span>10001</span><span>,</span><span>10002</span><span>,</span><span>10003</span><span>);</span> </li> <li> <span> </span><span>if</span><span> </span><span>(</span><span>in_array</span><span>(</span><span>$uid</span><span>,</span><span> $uidArr</span><span>,</span><span></span><span>true </span><span>))</span><span> </span><span>{</span> </li> <li> <span> $output </span><span>=</span><span>配列</span><span>(</span><span>'データ'</span><span></span><span>=></span><span> NULL</span><span>,</span><span> </span><span>'情報'</span><span>=></span>'ユーザーは存在しません!'<span> </span>,<span></span><span></span>'コード'<span></span><span></span>=><span></span><span></span>-<span></span>402<span></span>);<span></span> </li> <li>(<span></span>json_encode) <span></span>(<span></span>$output<span></span> )); <span></span><span></span> <span></span>}</li> <li> <span></span><span></span> </li> <li>[</li> <li>$uid<span></span>];<span></span> </li> <li> <span></span><span></span> <span> </span>//出力データ<span></span><span></span> $output <span></span>=</li> <li>配列<span></span>(</li> <li> <span></span>) <span></span>'データ' </li> <li> <span></span>=><span></span>配列<span></span>(<span></span> </li> <li> <span> </span><span>=></span><span> </span><span>本当</span><span>,</span><span>//そうですか初回ログイン u'unream'</span> </li> <li> <span> = & gt; </span><span> </span><span>4</span><span>, </span><span> // 不当なメッセージの数 </span><span></span> </li>'untask'<li> <span> </span><span> = & gt; </span> <span> </span><span>3</span><span>,</span><span>//未完了のタスク </span><span></span><span> </span> </li>),<li> <span></span><span></span><span> </span> <span></span>=><span></span> <span></span>'ここポップアップウィンドウでよく使用されるメッセージです'<span> </span>,<span></span> </li> <li>//メッセージプロンプト。クライアントはこれをポップアップウィンドウメッセージとしてよく使用します<span> </span><span> 200</span><span>,</span><span></span><span>//成功と失敗のコードは通常、正または負の数値です</span>。 <span></span><span> son_encode</span><span>(</span> </li>$output <li> <span>{</span><span></span><span> </span> </li>); //. ..<li> <span></span><span> </span><span>死ね</span><span>(</span><span>'あなたは調整中ですget_games_result インターフェイス!'</span><span>);</span><span></span><span> </span><span>}</span> </li> elseif <li> <span>(</span><span>$a </span><span>==</span><span> </span> 'upload_avatar'<span></span> )<span></span>{<span></span><span></span> upload_avatarインターフェース!'<span></span>);</li> <li> <span></span> <span></span>}</li> <li> <span></span><span>コードをコピー</span><span><span>クリックテスト (クライアントの場合、このアドレスは直接呼び出されることもあります):</span><br>http://www.ezhi.net/api/test/index.php<br>http://www.ezhi.net/api/test/ Index.php?a=get_users<br>http://www.ezhi.net/api/test/index.php?a=get_users&uid=10001<br>http://www.ezhi.net/api/test/index? a=get_users&uid=10002<br>http://www.ezhi.net/api/test/index.php?a=get_users&uid=10003<br><span>3. 実際のプロジェクトでは、API を開発する際にいくつかの点に注意する必要があります (参考)のみ): </span><br><span>1. if..elseif..、スイッチ、動的メソッド (つまり、関数本体にアクセスする TP の形式) など、複数のインターフェイスを 1 つのファイルに実装する方法はたくさんあります。 2. データ出力には json を使用するのが最適です。JSON は非常にクロスプラットフォームです。JSON は徐々に xml に取って代わり、ネットワーク データの汎用形式になりつつあります。 </span>3. インターフェース セキュリティのため、インターフェース検証を追加する必要があります。たとえば、クライアントとサーバーはさまざまなインターフェイスに統一された暗号化方式を使用しており、サーバーは各インターフェイスを検証する必要があります。これは、特に大規模な商用アプリケーションの場合、インターフェースがハッカーによって悪意を持って更新されたり、悪意を持って呼び出されたりするのを確実に防ぐためです。 <br><span></span>4. オンライン API の場合は、すべてのインターフェイスが正常であり、すべてのエラー メッセージが閉じられていることを確認する必要があります => error_reporting(0)。そうしないと、クライアントは解析に失敗します。データを直接クラッシュ! <br><span></span>5. API の開発と WEB の場合は、コードが間違っている可能性があり、特に重大なエラーが発生することはありませんが、データの書き込みやクエリの失敗が発生する可能性があります。 WEB の特定の部分がずれている、または意味不明です。ただし、API の場合はクラッシュするだけです。 <br><span></span>6. インターフェイス開発を行う場合、フレームワーク開発を使用することはお勧めできません。その理由は次のように要約できます (実際、私は少し危険です。結局のところ、これは公式 Web サイトです)。 TP): <br><span></span> 1) クライアント 一般に、サーバーの応答速度に対する要求は非常に高いため、フレームワークを使用する場合は、最も独創的な PHP を使用してインターフェース開発を完了するのが最も効率的です。夏にスーツを着るのと同じように、ファイルを読み込む必要があります。想像してみてください。携帯電話でゲームをしているときに、アプリケーションを使用して何らかの操作を実行し、動きがなくなるまで長時間待つことを耐えられますか。 <br><span></span> 2) 上記のポイント 4 で述べたように、フレームワークは WEB 開発にとって非常にありがたいものですが、API にとっては、それがどのような問題を引き起こすか本当に想像できません。結局は悲惨なことになりますよ~~ 多くのフレームワークは WEB のために生まれました (私も、いつか API 開発専用に設計されたフレームワークや拡張機能が登場することを楽しみにしています)<br><span></span> インターフェースの効率化や、これに悩んでいる人もいます。安定性は、コードを書く人によっても異なります。フレームワークほど高速に記述できない人もいます。また、フレームワークを使用しても問題ないと考える人もいます。これらは、実際の状況によって異なります。 . オンラインにする前にコードをストレステストすることもお勧めします<br><span> </span> そういえば、Tencent Weibo や Taobao などのオープンプラットフォームについて話さなければなりません。実際、これらのオープン プラットフォーム (いわゆるオープン) は、そのようなインターフェイスを提供します。提供されるインターフェイス ファイル (通常は JSON または XML を返します) は、提供される技術ドキュメントと、それらが設定する形式と要件に基づいて調整できます。 QQ ユーザーの基本情報、<br>淘宝網<span>、製品ニュースなどの関連情報を取得できます。次に、これらのメッセージに基づいてアプリケーションでの対話を完了します。 </span><br><span>実は<strong>ajax</strong>もAPIを呼び出す形式なのですが、どう思いますか? はは〜〜</span> <br> 上記では、ajax、淘宝網ストア、アプリケーション コンテンツなど、PHP およびモバイル APP 開発 (API インターフェイス開発) について簡単に説明しました。PHP チュートリアルに興味のある友人に役立つことを願っています。 <span> <strong> </strong></span></span> </li> </ol>