この記事では、PHP インターフェースの内容を紹介し、助けが必要な友人に参考にしてください。 Type:
1 つは、他の内部プロジェクト (js の非同期リクエスト インターフェイスやタイマーを含む) によって呼び出されるインターフェイスです。 もう1つは外部インターフェースで、主に外部開発者による呼び出しのために提供されます。
2つのインターフェースの最大の違いは、内部インターフェースは厳密な認証を必要としないことですが、外部インターフェースにはさまざまな暗号化と復号化の方法があります。最も一般的で単純なものは、私たちのようなhttp基本認証です。バックグラウンドでポップアップするアカウントとパスワードのポップアップ ウィンドウでは、基本的な検証が使用されます。検証に合格するには、アカウントとパスワードを入力する必要があります。ただし、内部インターフェイスに重要な操作が含まれており、他のユーザーから悪意のある要求を受けたくない場合は、暗号化の検証を行う必要があります。
2. どのインターフェイスであっても、次の問題を考慮する必要があります:
1.パラメータの安全性: このためには、基本的には $_INPUT で十分です。認証が必要かどうか: 内部通知クラス/コールバック クラスの単なるインターフェイスの場合、悪意のある要求があったとしても、この場合、検証はまったく行われません。注文ステータスを同期するためのインターフェイスを作成します。内部のプロセスは、問題のある注文ステータスを照会し、これらの注文のステータスを更新することです。この種のインターフェイスは値を返す必要がなく、悪意のある人が悪意を持って呼び出したとしても影響を受けないため、認証を行う必要がまったくありません。したがって、検証を追加するかどうかは、実際のインターフェイスのロジックに応じて決定されます。 2. リクエストを繰り返してもらえますか?たとえば、インターフェイスが受信した注文番号に基づいてデータを挿入する場合、複数のデータの挿入を避けるために、繰り返されるリクエストを判断する必要があります。
3. インターフェース仕様を記述する
1. try...catch... 構造体を使用して記述します。 (重要なことは、throw はいつでもプログラムを終了できるということです。これは非常に素晴らしいことです~) 2. ドキュメントを書きたい場合は、成功を返しません。呼び出し側がエラーの理由を問い合わせやすくするために、さまざまなエラー コードも明確に記述する必要があります。 以下のクリを直接見てください:
<?php $code = 200; // 接口状态码 $name = trim($_INPUT['name']); $age = trim($_INPUT['age']); if (empty($name)) { $code = 401; throw new Exception('名字不能为空'); } if (!is_numeric($age)) { $code = 402; throw new Exception('年龄必须由数字组成'); } $database_obj = new database_class(); $res = $database_obj->save($name, $age); if ( !$res ) { $code = 403; throw new Exception('保存数据失败'); } $msg = 'ok'; } catch ( Exception $e ) { $msg = $e->getMessage(); } output_json($code,$data,$msg); // $data可以放置需要返回的数据// output_json函数在大function里面有~如果不想引入大function的话可以复制一份到自己项目// ========END=======?>
1. インターフェースは、要求者に応じて 2 つのタイプに分けることができます。
1 つは、他の内部プロジェクトによって呼び出されるリクエスター インターフェイスです (JS 非同期リクエスト インターフェイスやタイマーを含む)。 もう1つは外部インターフェースで、主に外部開発者による呼び出しのために提供されます。 2つのインターフェースの最大の違いは、内部インターフェースは厳密な認証を必要としないことですが、外部インターフェースにはさまざまな暗号化と復号化の方法があります。最も一般的で単純なものは、私たちのようなhttp基本認証です。バックグラウンドでポップアップするアカウントとパスワードのポップアップ ウィンドウでは、基本的な検証が使用されます。検証に合格するには、アカウントとパスワードを入力する必要があります。ただし、内部インターフェイスに重要な操作が含まれており、他のユーザーから悪意のある要求を受けたくない場合は、暗号化の検証を行う必要があります。
2. どのインターフェイスであっても、次の問題を考慮する必要があります:
1.パラメータの安全性: このためには、基本的には $_INPUT で十分です。認証が必要かどうか: 内部通知クラス/コールバック クラスの単なるインターフェイスの場合、悪意のある要求があったとしても、この場合、検証はまったく行われません。注文ステータスを同期するためのインターフェイスを作成します。内部のプロセスは、問題のある注文ステータスを照会し、これらの注文のステータスを更新することです。この種のインターフェイスは値を返す必要がなく、悪意のある人が悪意を持って呼び出したとしても影響を受けないため、認証を行う必要がまったくありません。したがって、検証を追加するかどうかは、実際のインターフェイスのロジックに応じて決定されます。
2. リクエストを繰り返してもらえますか?たとえば、インターフェイスが受信した注文番号に基づいてデータを挿入する場合、複数のデータの挿入を避けるために、繰り返されるリクエストを判断する必要があります。
1. try...catch... 構造体を使用して記述します。 (重要なことは、throw はいつでもプログラムを終了できるということです。これは非常に素晴らしいことです~)
2. ドキュメントを書きたい場合は、成功を返しません。呼び出し側がエラーの理由を問い合わせやすくするために、さまざまなエラー コードも明確に記述する必要があります。 下の栗を直接見てください:
<?php $code = 200; // 接口状态码 $name = trim($_INPUT['name']); $age = trim($_INPUT['age']); if (empty($name)) { $code = 401; throw new Exception('名字不能为空'); } if (!is_numeric($age)) { $code = 402; throw new Exception('年龄必须由数字组成'); } $database_obj = new database_class(); $res = $database_obj->save($name, $age); if ( !$res ) { $code = 403; throw new Exception('保存数据失败'); } $msg = 'ok'; } catch ( Exception $e ) { $msg = $e->getMessage(); } output_json($code,$data,$msg); // $data可以放置需要返回的数据// output_json函数在大function里面有~如果不想引入大function的话可以复制一份到自己项目// ========END=======?>
以上がphpインターフェースの最初の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。