Java实现API调用,高并发获取数据(Taobao/JD/1688/PDD数据)

API定义

API是应用程序编程接口(Application Programming Interface)的缩写,能够起到两个软件组件之间的连接器或中介的作用。此类接口往往通过一组明确的协议,来表示各种原始的请求和响应。API文档可以向开发人员展示请求和响应是如何形成的。简单而言,API能够允许两个应用程序彼此之间实现通信。无论我们在手机上查看天气,还是使用微信,或者在Facebook等应用上收发消息,都会频繁地使用到API。

API的调用流程

当我们在使用应用程序的某项功能时,通常会在后台发生如下情况:

  • 数据请求被发送到服务器上

  • 服务器对其进行解析,并理解其请求的含义

  • 服务器提供必要的响应

  • 响应被成功地发送回设备

其实,每次在我们要求应用程序提供某些特定的服务响应时,这样的过程都会重复循环一次。

API的构建实践

API的构建实践,主要体现在如下五个方面:

  • 安全性:使用基于令牌的身份验证,是构建安全可靠的API的良好实践。它既保证了安全性,又兼顾了用户友好性。

  • 文件:精心编撰的API文档不但能够降低项目的开发成本,而且可以提高应用的运行效率和实现时间。应用程序开发人员往往需要通过丰富的API支持文档,来详细地了解整个调用与实现过程。

  • 节流:当涉及到需要重定向流量的溢出、防止DoS(拒绝服务)、以及备份各种API时,我们往往需要通过应用的节流,来有效地实现此类目的。

  • SDK和代码库:通过向开发团队提供必要的库资源,我们可以加速开发的进程。

  • 重写HTTP方法:由于一些代理只能支持POST和GET方法,因此我们使用定制的HTTP报头X-HTTP-Method-Override,能够允许RESTful API去重写HTTP的方法。

Java调用API

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.nio.charset.Charset;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.PrintWriter;
import java.net.URLConnection;

public class Example {
	private static String readAll(Reader rd) throws IOException {
		StringBuilder sb = new StringBuilder();
		int cp;
		while ((cp = rd.read()) != -1) {
			sb.append((char) cp);
		}
		return  sb.toString();
	}
	public static JSONObject postRequestFromUrl(String url, String body) throws IOException, JSONException {
		URL realUrl = new URL(url);
		URLConnection conn = realUrl.openConnection();
		conn.setDoOutput(true);
		conn.setDoInput(true);
		PrintWriter out = new PrintWriter(conn.getOutputStream());
		out.print(body);
		out.flush();
		InputStream instream = conn.getInputStream();
		try {
			BufferedReader rd = new BufferedReader(new InputStreamReader(instream, Charset.forName("UTF-8")));
			String jsonText = readAll(rd);
			JSONObject json = new JSONObject(jsonText);
			return json;
		} finally {
			instream.close();
		}
	}
	public static JSONObject getRequestFromUrl(String url) throws IOException, JSONException {
		URL realUrl = new URL(url);
		URLConnection conn = realUrl.openConnection();
		InputStream instream = conn.getInputStream();
		try {
			BufferedReader rd = new BufferedReader(new InputStreamReader(instream, Charset.forName("UTF-8")));
			String jsonText = readAll(rd);
			JSONObject json = new JSONObject(jsonText);
			return json;
		} finally {
			instream.close();
		}
	}
	public static void main(String[] args) throws IOException, JSONException {
		// 请求示例 url 默认请求参数已经URL编码处理
		String url = "https://api-fuwuqi.cn/taobao/seller_cat_props/?key=<您自己的apiKey>&secret=<您自己的apiSecret>&token=891d5886994b339992161df4bf9780c9&catid=203301";
		JSONObject json = getRequestFromUrl(url);
		System.out.println(json.toString());
	}

}

TAOBAO商品响应参数

返回字段解析 

名称 类型 必须 示例值 描述

item

item[] 1 宝贝详情数据

num_iid

Bigint 1 520813250866 宝贝ID

title

String 1 三刃木折叠刀过安检创意迷你钥匙扣钥匙刀军刀随身多功能小刀包邮 宝贝标题

desc_short

String 0 商品简介

promotion_price

Int 0 优惠价

price

Float 1 25.8 价格

total_price

Float 0 0

suggestive_price

Float 0 0

orginal_price

String 0 25.80 原价

nick

String 0 欢乐购客栈 掌柜昵称

num

Int 0 3836 库存

min_num

Int 0 0 最小购买数

detail_url

String 0 http://item.taobao.com/item.htm?id=520813250866 宝贝链接

pic_url

String 1 //gd2.alicdn.com/imgextra/i4/2596264565/TB2p30elFXXXXXQXpXXXXXXXXXX_!!2596264565.jpg 宝贝图片

brand

String 0 三刃木 品牌名称

brandId

Int 0 8879363 品牌ID

rootCatId

Int 0 50013886 顶级分类ID

cid

Int 1 50014822

crumbs

Mix 0 [] 导航菜单

created_time

String 0

modified_time

String 0

delist_time

String 0

desc

String 0 商品详情

desc_img

Mix 0 [] 商品详情图片

item_imgs

Mix 0 item_imgs[] 商品图片

item_weight

String 0

item_size

String 0

location

String 0 发货地

express_fee

Float 0 0.00 快递费用

ems_fee

Float 0 EMS费用

post_fee

Float 0 物流费用

shipping_to

String 0 发货至

has_discount

Boolean 0 false 是否有优惠

video

video[] 0 商品视频

is_virtual

String 0

sample_id

String 0 商品风格标识ID

is_promotion

Boolean 0 false 是否促销

props_name

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

你可能感兴趣的:(电商API知识分享,淘宝API接口,java,开发语言,网络爬虫,数据挖掘)