Teknologi Platform-Pengenalan kepada Panggilan Kelompok API


量1

, mengapa perlu memanggil

boleh meningkatkan prestasi aplikasi, tindak balas yang lebih pantas

Contohnya, anda perlu memanggil 7 perkhidmatan HSF yang berbeza untuk mengalih keluar data, dan kemudian memaparkan halaman. Dalam kes ini, jika anda ingin mempercepatkan respons halaman, anda boleh mempertimbangkan untuk memulakan 7 panggilan HSF serentak dan tunggu sehingga semua data dikembalikan sebelum memaparkan halaman. Walau bagaimanapun, model pengaturcaraan sedemikian akan mempunyai masa tindak balas yang panjang dan panggilan yang menyusahkan untuk pemanggil Jika TOP melengkapkan 7 panggilan HSF secara terus melalui mod siri dalaman, dan satu panggilan mengembalikan beberapa hasil data, maka ia boleh meningkatkan masa respons setiap permintaan dengan sangat baik. . Untuk sesetengah panggilan API yang kompleks (satu panggilan RT mungkin mencecah perniagaan 100MS), maka akan ada kesan pengoptimuman yang baik

Gunakan lebih sedikit trafik
                                      Satu panggilan API tunggal akan memindahkan dalam sistem tanda pendua atau perkhidmatan seperti: kaedah, cap masa, medan dan parameter lain Dalam banyak kes, parameter berulang ini menduduki sebahagian besar ruang dalam badan permintaan. Panggilan kelompok API boleh menggabungkan parameter ini pada peringkat protokol untuk mencapai penggunaan semula parameter. Ia sangat membantu untuk mengoptimumkan penggunaan rangkaian dalam panggilan mudah alih dan panggilan serentak yang tinggi pada pelayan.

2, ciri API panggilan kelompok

  • Menyokong semua ciri keselamatan dan perniagaan semasa
  • Menyokong semua panggilan gabungan percuma API kecuali muat naik fail
  • Menyokong hasil panggilan bercampur berbilang sesi dengan setiap panggilan bercampur
  • tidak
  • lain
  • Urutan tindak balas API adalah sama seperti urutan permintaan, tidak perlu mengisih atau menanyakan keputusan mengikut nombor
  • Pengalaman yang sangat pantas, API transaksi M + panggilan API komoditi N, RT adalah kira-kira 1 panggilan API transaksi (dengan andaian API urus niaga RT> API komoditi)
  • Servlet, HSF, mod panggilan tak segerak HTTP hibrid sepenuhnya, lancar menyokong senario campuran RT rendah + RT tinggi, meningkatkan keupayaan pemprosesan pelayan
  • Parameter awam dan nama kaedah boleh digabungkan, menyelaraskan mesej permintaan
  • Protokol panggilan mudah, panggilan API Batch boleh dilaksanakan dengan cepat tanpa SDK

3, Pengenalan kepada teknologi panggilan kelompok

3.1 Kandungan Protokol

http://w. URL Permintaan: http://w.

taobao.com/router /batch

POS:

http://gw.api.taobao.com/router/batch?sign=5336DB2C525E1A3AD1013BC82×tamp7B1=1013BC82C4437B1 15&v=2 . .
:
text/plain;charset=UTF-8
PAYLOAD:
Payload bawaan dari setiap API dan dalam bentuk split secara lalai ; Nilai parameter mestilah URL Encode

Kaedah pemisah tersuai: httpHeader.put("top-api-separator","????")Bermula dari baris pertama #PUBLIC#, parameter awam dan API nama boleh diekstrak , adalah pilihan. Jika anda tidak perlu mengekstrak parameter awam, alih keluar baris #PUBLIC# dan pembatas pertama pada masa yang sama

    Keutamaan parameter: Parameter baris API ===Override===> ==> Parameter URL
  • Kaedah tandatangan, serupa dengan tandatangan REST: hmac (lain yang serupa) byte2hex (hmac(key1value1key2value2...
  • payload
  • secret))
  • Placeholder: Andaikan anda mengabstrakkan semua parameter API AWAM #kawasan, sila letakkan pemegang tempat N untuk menunjukkan bahawa saya sebenarnya API; error_response":{"code":25,"msg":"Tandatangan tidak sah","request_id":"16t6sm38r9709"}}
  • .

    {"time_get_response":{"time":"2016-01-05 10:53:02","request_id":"16t6sm2gxmm5q"}}-S-{"trade_fullinfo_get_response":{"trade": orders":{"order":[{"adjust_fee":"0.00","buyer_rate":false,"cid":50069506,"consign_time":"2015-12-03 14:01:07","discount_fee" :"0.00","end_time":"2015-12-03 16:18:19","invoice_no":"0000","is_oversold":false,"logistics_company":"电 子凭 证","num" :1,"num_iid":2100727710059,"oid":193923500416510,"order_from":"TAOBAO","payment":"11.00","pic_path":"http:/ /img04.daily.taobao.net/bao/ uploaded/i4 /TB1EG6SXXXXXXaBXXXXXXXXXXXX_!!0- item_pic.jpg","price":"11.00","refund_status":"NO_REFUND","seller_rate":false,"seller_type":"C","shipping_type":"virtual ","snapshot_url":"d:193923500416510_1","status":"TRADE_FINISHED","title":" 测试发布收费课 2015123","total_fee":"11.00.00"}"} ,"receiver_address":"15988161275","receiver_mobile":"","receiver_name":" 不****","status":"TRADE_FINISHED","tid":193923500416510,"type":"etiket"} ,"request_id":"16t6sm2gxmm5q"}}-S-{"error_response":{"code":27,"msg":"Invalid session","sub_code":"invalid-sessionkey","request_id": "16t6sm2gxmm5q"}}

    • response, kes 1: Mesej tindak balas hanya mempunyai satu hasil; API akan mempunyai ralat tandatangan.
    • Respons, kes 2: Bilangan API dalam mesej respons dan mesej permintaan adalah sama, dan perintah respons akan konsisten dengan pesanan permintaan. Contohnya, jika anda menyerahkan 15 permintaan, mungkin terdapat 10 kejayaan, 3 kawalan aliran dan 2 pengecualian penyedia perkhidmatan HSF tetapi badan respons kami masih mempunyai 15 respons permintaan.
    • Mod pemisah tersuai: Pemisah lalai ialah rn-S-rn; apabila menyerahkan permintaan dalam mod tersuai, gunakan httpHeader.put("pemisah-api atas","????"); pemisah badan konsisten

    4 , kaedah penggunaan SDK

    4.1 Cipta Pelanggan

    Pelanggan BatchTaobaoClient = BatchTaobaoapi baru, "/
    Pelanggan BatchTaobaoapi. "/
    appkey", "secret");} //Nota: Untuk menggunakan kaedah ini, anda perlu memuat turun sdk terkini. sdk lama belum menyokong fungsi panggilan kelompok lagi

    4.2 Cipta Permintaan Batch
    TaobaoBatchRequest batchRequest = TaobaoBatchRequest();
    🎜

    4.3 添加请求API

    batchRequest.addRequest(timeGetRequest1)
                                         .addRequest(timeGetRequest2)
                                         .addRequest(timeGetRequest3)
                                         .addRequest(timeGetRequest4)
                                         .addRequest(fullinfosRequest1)
                                         .addRequest(fullinfosRequest2)
                                         .addRequest( fullinfosRequest3);

    4.4 提交请求

    TaobaoBatchResponse       response = client.execute(batchRequest );
     Request
    历结果

    jika (response.isSuccess()) {
                        untuk (int i = 0; i < response.getResponseList().size(); i++) 
                             println("body:" + response.getResponseList().get(i).getBody()  );     ;


    询4.6 Hasil pertanyaan rawak

    (response.isSuccess ()) {
    timegetResponse resp1 = response.getResponse (timegetRequest1 )
    Println ("Masa Pelayan:"+Resp1. getTime ());

    Nota: Untuk menggunakan sdk untuk melaksanakan fungsi panggilan api batch, anda perlu memuat turun sdk, muat turun dan titik penggunaan terkini di sini.

    5. Contoh senario penggunaan biasa

    Ambil panggilan antara muka untuk mendapatkan butiran pesanan sebagai contoh Pada asalnya, untuk menanyakan beberapa butiran pesanan pedagang, beberapa permintaan perlu dibuat berulang kali sekarang jika anda menggunakan mod kumpulan , satu permintaan boleh mengembalikan Berbilang hasil boleh meningkatkan kecekapan panggilan API. Berikut ialah contoh panggilan sdk dalam senario penggunaan biasa (java):

    5.1. Tanya butiran pesanan berbilang daripada pedagang tunggal

    Pelanggan BatchTaobaoClient = BatchTaobaoClient baharu ( "http://gw.api.taobao.com/router/batch?","test","test"); U TradeFullinfogetrequest Req1 = New TradeFullinfogetRequest ();
    Req1.SetFields ("TID");                                                                                                                                                                                                                                                                                                               guna   guna guna guna guna gunakan melalui penggunaan melalui melalui melalui melalui melalui melalui melalui melalui melalui melalui keluar keluar keluar keluar keluar keluar keluar bersih keluar daripada 'terlalu menjadi  semula' sudah jadi begitu-- jadi begitu jadi begitu Oleh itu, jadi begitu, jadi begitu begitu jadi jadi jadi jadi jadi jadi jadi begitu begitu begitu begitu begitu begitu begitu jadi jadi begitu begitu begitu jadi jadi begitu begitu begitu begitu begitu begitu begitu begitu begitu begitu begitu begitu begitu begitu ... jadi begitu begitu begitu begitu begitu begitu begitu begitu begitu begitu begitu begitu begitu so so so so... "test"); //ujian mewakili kunci sesi pedagang



    5.2. Tanya butiran pesanan berbilang daripada berbilang pedagang

    Pelanggan BatchTaobaoClient = BatchTaobaoClient baharu ( "http://gw.api.taobao.com/router/batch?","test","test"); TradeFullinfogetrequest Req1 = New TradeFullinfogetRequest ();
    Req1.SetFields ("TID"); semula REQ2.Settid ( 6666666666662L); // Pesanan pedagang A 2
    tradeFullinfogetrequest Req3 = New TradeFullinfogetRequest ();
    Req3.SetFields ("T id "); tchApiSession ("testtest"); //sessionkey of Merchant b

    TaobaoBatchRequest req = new TaobaoBatchRequest();       req.addRequest(req2);       
           req.addRequest(req3);       
              
         TaobaoBatchResponse rsp = client.execute(req,       "test");       //商家a的sessionkey

    5.3. Tanya berbilang pesanan pedagang dan butiran produk

    Pelanggan BatchTaobaoClient = BatchTaobaoClient baharu ( "http://gw.api.taobao.com/router/batch?","test","test"); TradeFullinfogetrequest Req1 = New TradeFullinfogetRequest ();
    Req1.SetFields ("TID"); emSellerGetRequest();                                                                                                                          ... ("); Produk 1 pedagang b                                                                                                                                                                                                                                                                                                                                         .       req.addRequest(req2);       
           req.addRequest(req3);       
              
         TaobaoBatchResponse rsp = client.execute(req,       "test");       //商家a的sessionkey

     

    FAQ

    测试环境下与正式环境下的API调用量有限制吗?