APIインターフェースの接続方法

日常業務において、A社がB社のAPIメソッドに接続したいという場面がよくありますが、この記事ではA社の視点で実際にB社のAPIインターフェースに接続していきます。

1. 背景

日常業務でよく遭遇するシナリオは次のとおりです: 会社 A は会社 B の API メソッドに接続したいと考えています。このとき、会社 A は会社 B のインターフェイス ドキュメントを読み取り、インターフェイス ドキュメントから接続する必要がある API を見つける必要があります。インターフェース文書の要件に従ってコーディング作業を完了し、最後にドッキング作業を完了します。

この記事はA社の視点で、B社のAPIインターフェースを接続する実戦です。

2. B 社のインターフェースの基本的な規則を理解する

通常の状況では、B 社は基本的なドッキングを満たすために次のような同様の契約を締結し、テスト環境と正式環境に対して 2 つの情報セットを提供します。

appkey: A社のマーチャントプラットフォーム登録ID

appsecret: A 社のマーチャント プラットフォームによって取得されたシークレット

3. 基本ドメイン名

通常の状況では、B 社は、テスト環境と運用環境という 2 つの基本的なドメイン名を提供します。

例えば:

テスト環境:https://******.com.cn

本番環境:https://******.com.cn

4. リクエストと対応するフォーマットの説明

通常の状況では、B 社はリクエストとそれに対応する基本フォーマットの指示を提供します。

例えば:

1. リクエスト方法

役職

2. リクエストメッセージのフォーマット

アプリケーション/json

3. 応答メッセージのフォーマット

アプリケーション/json

4. パブリックパラメータをリクエストする

たとえば、B 社には次のような要件があります。

すべてのインターフェイスは、HTTP ヘッダー モードで次のパラメータを渡す必要があります。

名前 タイプ しなければならない 説明する
はい 呼び出しキー (GET モードで URL に結合する必要があります)
秘密 はい 通話キー
api_name はい APIインターフェース名(リクエストアドレスに含まれる) [item_search、item_get、item_search_shopなど]
キャッシュ いいえ [はい、いいえ] デフォルトは [はい] で、キャッシュされたデータが呼び出され、より高速になります。
結果の種類 いいえ [json,jsonu,xml,serialize,var_export] はデータ形式を返します。デフォルトは json です。jsonu によって出力されたコンテンツは中国語で直接読み取ることができます。
ラング いいえ [cn,en,ru] 翻訳言語、デフォルトは cn 簡体字中国語
バージョン いいえ APIバージョン

もちろん、さまざまな企業が提供するパラメータは異なり、企業ごとに異なります。

5. レスポンス/コールバックパラメータの説明

例:B社のすべてのAPIにはレスポンスがあり、一部のAPIにはコールバックレスポンスもありますが、レスポンスであってもコールバックレスポンスであってもパラメータの形式は同じです。

名前 タイプ しなければならない 値の例 説明する

アイテム

アイテム[] 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 商品属性图片列表

property_alias

String 0 20509:9974422:36;1627207:28326:红色;20509:9975710:38;1627207:28326:红色;20509:9981357:40;1627207:28326:红色 销售属性值别名。格式为pid1:vid1:alias1;pid1:vid2:alia2。

props

Mix 0 [{ "name": "产地","value": "中国" }] 商品属性

total_sold

Int 0

skus

skus[] 0 商品规格信息列表

seller_id

Int 0 2844096782 卖家ID

sales

Int 0 138 销量

shop_id

Int 0 151372205 店铺ID

props_list

Mix 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 []

6、针对异步回调的说明

例如:B公司对异步回调说明如下:

异步回调:

一部の特定のインターフェイスは結果を非同期で返す必要があるため、販売者 A はコールバック アドレスを提供し、base64 でエンコードして、HTTP リクエスト ヘッダーの callback_url で構成する必要があります。

応答メカニズム:

応答メカニズムは、販売者 A が会社 B からデータ通知を受信すると、大文字と小文字が区別されない成功文字列を書き戻す必要があることを意味します。会社 B が「成功」を受信すると、販売者 A が通知を受信したと見なされます。 ; それ以外の場合は、リクエストを繰り返し続けるため、1 秒、5 秒、30 秒の間隔でインターフェイスを 3 回コールバックします。アクセスが 4 回失敗した場合、コールバックは 3 時間ごとにポーリングされ続けます。

コールバック復号化:

コールバックは AES を使用して暗号化されているため、使用前に復号化する必要があります。ネットワーク変動によるコールバック失敗を避けるため、また長期間コールバックがない場合は、お気軽にお問い合わせください。

7. リクエスト本文の暗号化の手順と例

データはAESにより暗号化され、暗号化後のデータの値として利用されます。

例:

暗号化前:

暗号化後:

8. コールバック復号化の手順と例

データはAESを使用して復号化され、データ値部分が復号化され、復号化された後のjson文字列になります。

復号化前:

復号化後:

9. 通常、B 社はコード値についても説明します。

5. 接続する API を決定する

通常であれば、あるプロジェクトに必要なAPIはB社が提供しており、接続するAPIの数は少ないことが多いため、どのAPIメソッドに接続するのかを確認する必要があります。API の要件に従って接続するだけで済みます。

6. API ドキュメントに従って、いくつかの基本的なツール クラスを作成します。

ツールは 2 つのカテゴリに分類されます。最初のカテゴリのツールについては、B 社がデモを提供するので、それをそのまま使用できます。もう 1 つのタイプは、API 要件に従って自分で記述する必要があります。

7. API ドキュメントに従って必要な DTO を作成します。

APIごとに主にリクエストDTO、レスポンスDTO、コールバックレスポンスDTOがあり、APIの要件を把握し、要件を満たすDTOを記述する必要があります。

もちろん、一部の DTO はクラスに抽象化できます (たとえば、一般応答 DTO とコールバック応答 DTO は同じです)。このとき、DTO に抽象化できます。

8. 各APIメソッドを接続する

上記の準備が完了したら、インターフェイスを 1 つずつ接続できます。次の方法を使用して、インターフェイスを 1 つずつ接続できます。

おすすめ

転載: blog.csdn.net/APItesterCris/article/details/132914584