アプリケーション プログラミング インターフェイス (API) は、特定のビジネス出力機能を提供し、さまざまなシステムを接続するための規約です。これには、外部システムとサービスを提供するシステム (ミッドエンド システムおよびバックエンド システム) の間、または異なるバックエンド システム間の対話ポイントが含まれます。外部インターフェイス、内部インターフェイス、および内部インターフェイスには、上位層サービス インターフェイスと下位層サービス インターフェイス、およびピア インターフェイスが含まれます。
技術的な上司の目に何も理解していないデマンドポーターとみなされたくない場合は、インターフェイスについての明確な知識を持っている必要があります。
一般的な Web インターフェイスは http/https プロトコル インターフェイスであり、主に外部システムやフロントエンド システムへの呼び出しに使用されますが、このインターフェイス アドレスは外部に公開されるため、インターフェイスのセキュリティは高度に検証される必要があります。また、オープンソースのRPCをベースとしたクロスシステムインターフェース呼び出しインターフェースソリューションもあり、主に大企業のイントラネットにおけるシステム間の相互呼び出しに利用されており、サービス管理機能が強化され、インターフェースの応答速度が高速化されています。次のコンテンツでは、例として http インターフェイスを使用して説明します。
1. インターフェースリクエストメソッドの種類
一般的な http リクエスト メソッドには、get (チェック)、post (追加) に加えて、put (変更)、delete (削除) などが含まれます。インターフェイスのタイプはビジネスによって決定されます。たとえば、タオバオを開いたときに表示されるホームページのコンテンツは取得インターフェースを使用してページ情報を取得する必要がありますが、商品が気に入ったときに注文し、収穫アドレスを追加したい場合は投稿インターフェースを使用します。これら 2 つは、最も一般的な 2 つのインターフェイス タイプでもあります。
1) 型インターフェイスの取得
形式:URLの後ろにリクエスト番号パラメータを記述し「?」でつなぎ、複数のパラメータは「&」でつなぎます。
シナリオ: get インターフェイスは情報を取得するために使用され、主にメニュー リスト表示、検索表示、注文クエリ、クーポン クエリなどのデータのクエリに使用されます。他のシステムがデータを返す必要がある場合に使用されます。一般に、要求されるデータ量は少なく、返される速度は速いですが、インターフェースが外部に露出しているため、一定のリスクがあります。
2) ポストインターフェース
説明: データ (フォームの送信、ファイルのアップロードなど) を指定されたリソースの場所に送信してリクエストを作成します。リクエストを投稿すると、新しいリソースが作成される場合があります。
シナリオ: 登録、アップロード、投稿などの機能には大量のデータが必要であり、高いセキュリティが必要です。
put (変更)、delete (削除)、patch などの他のインターフェイス タイプは、使用率がわずかに低いため、ここでは説明しません。
2. インターフェース応答メカニズムのタイプ
リターンとは区別され、同期インターフェースと非同期インターフェースに分けられます。
1) 同期インタラクション
これは、リクエストを送信するときに、次のリクエストを送信する前に、戻りを待つ必要があることを意味します。
たとえば、ログイン インターフェイスでは、ログイン操作を実行するときに、ユーザー名、パスワード、トークンなどのフィールドが暗号化され、インターフェイスを通じて検証され、ログインが成功する前に検証結果が返される必要があります。
2) 非同期対話
これは、戻りを待たずにリクエストを送信することを意味し、いつでも次のリクエストを送信できます。つまり、待つ必要はありません。
ユーザーがクーポンを主導する場合、ユーザーのクーポン収集動作のリクエストに成功するだけでよく、リクエストを受け取った後、アセット システムはユーザーにクーポンを発行するよう非同期に操作し、非同期メソッドを通じてクーポン発行を実行します。呼び出し側は待つ必要はありません。各リクエストの呼び出し結果。
違い: 1 つは待機を必要とし、もう 1 つは待機を必要としないため、ユーザー エクスペリエンスに影響を与えない限り、プロジェクト開発では通常、待機を必要としない非同期対話方式を優先します。
同期インタラクションの使用はどのような状況で推奨されますか? たとえば、ユーザー ログイン、銀行振込システム、データベース保存操作などはすべて同期対話操作を使用しますが、他の場合には非同期対話操作が最初に使用されます。
3. インターフェースのトリガー形式タイプ
1) 配信インターフェース
システムが新しいデータを生成すると、そのデータは他のシステム (または複数) に配布されます。
ミドルエンド システムの中心となるアイデアは、高い凝集性と低い結合性であるため、ディストリビューション インターフェイスの使用シナリオはまだ多くあります。たとえば、すべてのチャネル データを管理するメイン チャネル システムがあり、チャネル データは商品システムやプロモーション システムなどの他のシステムでもよく使用される情報です。したがって、新しいチャネルが出現するかチャネルの変更が発生すると、最新のチャネルの機能サポートを実現するために、接続されている他のすべてのシステムにそのチャネルを配布する必要があります。
2) サブスクリプションインターフェイス
システムは、必要に応じて、データ サブスクリプションのために他のシステムのインターフェイスを呼び出します。
たとえば、注文システムが注文を生成するとき、多くの外部システムは注文ステータス情報を適時に取得する必要がある場合があります。注文システムは、どのシステムに配布すべきかを知りません。このとき、通常、注文は KFK などの特定のメッセージ キューにプッシュされます。注文ステータスをフォローアップする必要がある他のシステムは、注文の直後に注文完了情報を取得できます。 KFK メッセージをサブスクライブします。続行すると、次のアクションがトリガーされます。
4. その他のAPIインターフェースの基本構成
特定のビジネスの下で、インターフェイスの要求タイプ、応答メカニズムなどが決定された後、インターフェイスの他のコンポーネントを理解するために、電子商取引データ プラットフォームの製品詳細インターフェイスを例として取り上げます。
1) 応用シナリオ
名前が示すように、このインターフェイスは、インターフェイスのビジネス目的を明確にするシナリオに適しています。
- 商品レコメンド:ユーザーの購買履歴や行動データを分析し、関連商品をユーザーにレコメンドし、売上転換率を向上させます。
- 価格分析: 競合他社や同じ業界の製品価格を分析することで、合理的な価格戦略を策定します。
- 在庫管理:商品の販売に基づいた商品選定と在庫管理を行うことで、商品の十分な供給を確保し、在庫残などのリスクを軽減します。
- ユーザーポートレート: ユーザーの購入履歴や行動データを分析することで、ユーザーの興味、好み、消費習慣を明らかにし、精密なマーケティングの基盤を提供します。
- マーケティング活動: 製品データに基づいて、ユーザーを購入に導き、売上と顧客ロイヤルティを向上させるための適切なプロモーション プランを開発できます。
- カスタマーサービス: 製品データを使用して顧客フィードバック分析を実施し、製品に関するユーザーの質問や意見を理解し、ユーザーのニーズや問題にタイムリーに対応し、顧客満足度を向上させます。
API インターフェイスを使用する人は、次のカテゴリに分類されます。
開発者: API インターフェイスは、開発者が他のシステムやプラットフォームの機能を利用して独自のアプリケーションや Web サイトを構築するための便利な方法を提供します。
データ アナリスト: データ アナリストは複数のプラットフォームまたはシステムからデータを収集する必要があり、API インターフェイスはデータを迅速に取得する方法を提供します。
ビジネス ユーザー: ビジネス ユーザーは、API インターフェイスを使用して、さまざまなプラットフォーム上の取引情報を統合し、製品在庫、市場販売、その他の情報を監視および管理できます。
システム管理者: システム管理者は、API インターフェイスを使用してシステムの実行ステータスを監視および管理し、問題をタイムリーに発見して解決できるようにすることができます。
2) 入力と出力
応答パラメータ
名前 | タイプ | しなければならない | 値の例 | 説明する |
---|---|---|---|---|
アイテム |
アイテム[] | 1 | 赤ちゃんの詳細データ | |
num_id |
Bigint | 1 | 520813250866 | 赤ちゃんID |
タイトル |
弦 | 1 | セキュリティチェック合格の木製三枚刃折りたたみナイフ、クリエイティブミニキーホルダー、キーナイフ、サーベル、携帯用多機能ナイフ、送料無料 | 赤ちゃんのタイトル |
desc_short |
弦 | 0 | 製品説明 | |
プロモーション価格 |
内部 | 0 | 特別価格 | |
価格 |
浮く | 1 | 25.8 | 価格 |
合計金額 |
浮く | 0 | 0 | |
示唆的な価格 |
浮く | 0 | 0 | |
オリジナル価格 |
弦 | 0 | 25.80 | 元値 |
ニック |
弦 | 0 | ハッピー ショッピング イン | 店主のあだ名 |
番号 |
内部 | 0 | 3836 | 在庫あり |
私の番号 |
内部 | 0 | 0 | 最低購入数量 |
詳細URL |
弦 | 0 | http://item.taobao.com/item.htm?id=520813250866 | ベイビーリンク |
pic_url |
弦 | 1 | //gd2.alicdn.com/imgextra/i4/2596264565/TB2p30elFXXXXXQXpXXXXXXXXXX_!!2596264565.jpg | 赤ちゃんの写真 |
ブランド |
弦 | 0 | 三刃木 | ブランド名 |
ブランドID |
内部 | 0 | 8879363 | ブランドID |
rootCatId |
内部 | 0 | 50013886 | 最上位のカテゴリ ID |
シド |
内部 | 1 | 50014822 | |
パン粉 |
ミックス | 0 | [] | ナビゲーションメニュー |
作成時間 |
弦 | 0 | ||
修正時刻 |
弦 | 0 | ||
リスト削除時間 |
弦 | 0 | ||
説明 |
弦 | 0 | 製品詳細 | |
desc_img |
ミックス | 0 | [] | 製品詳細写真 |
アイテム画像 |
ミックス | 0 | アイテム画像[] | 製品画像 |
アイテムの重量 |
弦 | 0 | ||
アイテムサイズ |
弦 | 0 | ||
位置 |
弦 | 0 | 出荷地 | |
特急料金 |
浮く | 0 | 0.00 | 宅配便料金 |
ems_fee |
浮く | 0 | EMS料金 | |
郵便料金 |
浮く | 0 | 物流費 | |
への配送 |
弦 | 0 | 送り先 | |
割引あり |
ブール値 | 0 | 間違い | 割引はありますか? |
ビデオ |
ビデオ[] | 0 | 製品ビデオ | |
is_virtual |
弦 | 0 | ||
is_プロモーション |
ブール値 | 0 | 間違い | 昇進か否か |
小道具名 |
弦 | 0 | 1627207:1347647754: 色の分類: 長方形、栓抜き + ツール ナイフ カード + チェーン付き; 1627207: 1347647753: 色の分類: 楕円形、栓抜き + ツール ナイフ カード + チェーン付き。 | 製品の属性名。形式は pid1:vid1:name1:value1;pid1:vid2:name2:value2 です。 |
prop_imgs |
prop_imgs[] | 0 | 製品属性画像一覧 | |
プロパティエイリアス |
弦 | 0 | 20509:9974422:36;1627207:28326:赤;20509:9975710:38;1627207:28326:赤;20509:9981357:40;1627207:28326:赤 | Sales 属性値の別名。形式は pid1:vid1:alias1;pid1:vid2:alias2 です。 |
小道具 |
ミックス | 0 | [{ "名前": "原産地", "値": "中国" }] | 製品の属性 |
合計販売数 |
内部 | 0 | ||
スカス |
スカス[] | 0 | 製品仕様情報一覧 | |
販売者ID |
内部 | 0 | 2844096782 | 販売者ID |
販売 |
内部 | 0 | 138 | 販売数量 |
ショップID |
内部 | 0 | 151372205 | ストアID |
小道具リスト |
ミックス | 0 | {20509:9974422: サイズ:36} | 製品の属性 |
seller_info |
seller_info[] | 1 | 卖家信息 | |
tmall |
Boolean | 0 | false | 是否天猫 |
error |
String | 0 | 错误信息 | |
warning |
String | 0 | 警告信息 | |
url_log |
Mix | 0 | [] | |
favcount |
Int | 0 | 0 | |
fanscount |
Int | 0 | 0 | |
method |
String | 0 | item_tmall:pget_item | |
promo_type |
String | 0 | ||
props_img |
Mix | 0 | 1627207:28326": "//img.alicdn.com/imgextra/i2/2844096782/O1CN01VrjpXt1zyCc9DvERE_!!2844096782.jpg | 属性图片 |
shop_item |
Mix | 0 | [] | |
relate_items |
Mix | 0 | [] |
入参是接口请求所需要的变量参数,其中包括必填参数和非必填参数,非必填并非是可以忽略的。
3)错误码
接口请求并非每次都能成功,所以在接口开发时会对可能失败的情况进行错误码区分,在接口联调时可以根据返回的错误码快递定位问题。如果错误码不够全面,那在接口调用失败的时候,需要反复定位,降低开发效率。
错误码解释
状态代码(error_code) | 状态信息 | 详细描述 | 是否收费 |
---|---|---|---|
0000 | success | 接口调用成功并返回相关数据 | 是 |
2000 | Search success but no result | 接口访问成功,但是搜索没有结果 | 是 |
4000 | Server internal error | 服务器内部错误 | 否 |
4001 | Network error | 网络错误 | 否 |
4002 | Target server error | 目标服务器错误 | 否 |
4003 | Param error | 用户输入参数错误 | 忽略 |
4004 | Account not found | 用户帐号不存在 | 忽略 |
4005 | Invalid authentication credentials | 授权失败 | 忽略 |
4006 | API stopped | 您的当前API已停用 | 忽略 |
4007 | Account stopped | 您的账户已停用 | 忽略 |
4008 | API rate limit exceeded | 并发已达上限 | 忽略 |
4009 | API maintenance | API维护中 | 忽略 |
4010 | API not found with these values | API不存在 | 忽略 |
4012 | Please add api first | 请先添加api | 忽略 |
4013 | Number of calls exceeded | 调用次数超限 | 忽略 |
4014 | Missing url param | 参数缺失 | 忽略 |
4015 | Wrong pageToken | 参数pageToken有误 | 忽略 |
4016 | Insufficient balance | 余额不足 | 忽略 |
4017 | timeout error | 请求超时 | 否 |
5000 | unknown error | 未知错误 | 否 |
五、接口安全性校验
接口完成业务逻辑开发后,接下来要考虑的就是安全性问题了,接口的安全性问题主要来源于几方面考虑:
1)请求来源是否合法?
即接口的伪装攻击,因为接口是对外的,在公网环境中,接口地址是暴露的,收到的请求有可能是恶意非法请求;如果真的是合法请求,也需要知道这个请求的来源,同时这个请求来源不能否认。这里引入“签名”的概念,以及签名的防伪装及抗否认性特性。
近些年各大企业强制使用https替换掉原有的http接口,正是因为https所使用的的证书安全性更高。
2)请求是否会被篡改,返回数据可能会被截取
因为接口是对外的,所以接收请求和返回数据的时候,是不可能使用明文方式传输的,否则一旦被恶意截取,会造成极大风险。所以请求数据及返回数据都是需要加密的,这样即使数据被截取,也不用泄露数据的内容。
3)如何防范接口的重放攻击,防重放攻击是什么呢?
就是把你的请求原封不动地多次发放,请求都会通过验证进入到正常逻辑中,会造成服务端接口拥堵并且会造成实际损失。
防重放一般需在请求参数加上 时间戳 + 随机数,通过时间戳确保接口是最新的请求,而随机数相同则可以认定为是重放攻击。
六、接口性能相关
如果是访问量比较大的接口,再上线前肯定需要进行压力测试。因为普通的开发自测和生产模拟是不能推算出高并发时候接口是否可正常运行。
1)TPS
Transaction Per Second 每秒系统处理的交易或事物的数量,衡量系统处理能力的重要指标。
2)RT
応答時間は、クライアントがリクエストを送信してからサーバーから返される応答結果を受信するまでの時間で、リクエスト送信時間、ネットワーク送信時間、サーバー処理時間の 3 つの部分で構成されます。
3) スループット
パフォーマンス テスト中にネットワーク上で送信されるデータの総量を指します。
言うまでもなく、ユーザーの応答時間は長すぎてユーザー エクスペリエンスに悪影響を及ぼしますが、同時実行性が高い期間であっても、ユーザーの応答時間は最小限 (通常は 5 秒以内) に制御する必要があります。
TPS は、高い同時実行性の指標です。通常、サービスを提供するインターフェイスでは、最も極端な状況での同時実行数を考慮する必要があります。これらの数値は、通常、運用活動の計画と過去のデータ傾向の推定から得られます。これに基づいて、次のことを確認できます。このインターフェイスは最大数の同時実行をサポートでき、通常はこれらを検証するためにストレス テストが使用されます。通常の状況でストレス テスト中に tps が 2000 に達し、インターフェイスが正常であれば、実際の同時実行性 2000 が保証されます。
7. インターフェースではどのようなテストを行う必要がありますか?
インターフェイス テストは実際にはホワイトボックス テストであり、ホームページではシステムの機能出力とサービス範囲がニーズを満たしているかどうかを明確にする必要があります。ビジネス ロジックを使用してインターフェイス パラメーターをプッシュします。
1) 入力パラメータが要件を満たしていない場合は、問題の再現と特定を容易にするために、明確なエラー コード、エラー メッセージ、およびログが必要です。
2) パラメータ処理ロジックへの別のリンクがある場合は、それも検証する必要があります。たとえば、NetEase Cloud Music メンバーシップを購入した場合、注文は、注文生成後に資本システムによって重み付けされます。成功すると、テキストメッセージがユーザーに通知しますが、重み付けインターフェイスと注文情報はユーザーの携帯電話番号がないため、入力パラメータにユーザーの携帯電話番号がありませんが、携帯電話番号を照会する必要がありますユーザーのユーザー名に基づいてテキスト メッセージの送信操作を実行します。
コード カバレッジが要件を満たしているかどうか、パフォーマンス指標が要件を満たしているかどうか、セキュリティ指標が要件を満たしているかどうかなど、その他の検証目標は、より専門的なテスト指標です。