首页 文章 精选 留言 我的

精选列表

搜索[api],共10000篇文章
优秀的个人博客,低调大师

商品条码查询 API接入思路

做零售、电商或者仓储系统时,商品录入是一个看起来简单、实际很容易产生重复工作的环节。 工作人员拿到一件新商品后,往往需要填写商品名称、品牌、规格、生产企业、重量、原产国、包装类型等信息。如果商品数量比较少,人工录入还能处理;但当 SKU 数量增加后,同一个品牌或商品因为不同人员填写习惯不同,很容易出现名称不统一、规格格式不同或者字段遗漏。 商品包装上的条码本身可以作为商品信息查询入口。根据当前接口资料,商品条码查询支持传入 13 位或 14 位条码,再获取对应商品的名称、品牌、规格、企业、重量、原产国、保质期等信息。对于零售商品建档、电商商品录入以及仓储系统来说,这类接口更适合用来减少基础商品资料的重复填写。 ## 一、商品条码查询解决的是什么问题? 商品条码最常见的使用方式是扫码,但“识别出条码数字”和“根据条码查询商品信息”其实是两个步骤。 例如扫描一个商品包装后,扫码设备可能得到: 6906337301091 这一步只是拿到了条码字符。如果业务系统还需要知道这个条码对应什么商品、什么品牌、什么规格,就需要再根据条码查询商品数据。 整个流程可以理解为: 扫描商品条码 → 获取条码数字 → 查询商品信息 → 填充商品档案 如果系统本身已经能够获取条码数字,也可以直接从查询这一步开始,并不要求必须通过图片识别。 ## 二、接口需要提交哪些参数? 当前商品条码查询接口路径为: https://www.tanshuapi.com/market/detail-77 返回格式为 JSON,请求方式不限。 请求参数只有两个: |参数|必填|类型|说明| | --- | --- | --- | --- | |key|是|string|接口调用凭证| |barcode|是|string|商品条码| 根据产品资料,该接口用于查询 13 位或 14 位商品条码。 例如在商品录入页面中,可以按照下面的参数结构提交: |参数|示例值|说明| | --- | --- | --- | |key|YOUR_KEY|接口调用凭证| |barcode|6906337301091|商品条码| 相比把完整请求地址直接写进业务逻辑说明里,用参数表更容易看清楚系统实际需要准备哪些数据。 ## 三、一个商品条码可以返回哪些信息? 当前接口返回的字段比较多,不只是商品名称。 |字段|说明| | --- | --- | |barcode|条形码| |brand|品牌名称| |goods_name|商品名称| |company|公司名称| |category_code|分类编码| |category_name|分类名称| |image|商品图片| |spec|产品规格| |width|宽| |height|高| |depth|深| |gross_weight|毛重| |net_weight|净重| |price|价格| |origin_country|原产国| |first_ship_date|上市日期| |packaging_type|包装类型| |shelf_life|保质期| |min_sales_unit|最小销售单位| |certification_standard|国家认证标准| |certificate_license|生产许可证| |keyword|关键词| |goods_type|商品分类| |remark|备注信息| 从系统设计角度,可以把这些数据粗略分成几组。 第一组是商品身份信息,包括 barcode、goods_name、brand 和 company,用于回答“这是什么商品”。 第二组是规格信息,包括 spec、width、height、depth、gross_weight 和 net_weight,可以用于商品档案或者仓储资料。 第三组则是商品属性信息,例如 origin_country、packaging_type、shelf_life 和 min_sales_unit。 还有一部分字段更适合在需要时使用,例如分类编码、认证标准、生产许可证和备注信息。 企业不一定需要把所有字段都展示给前端用户,更适合根据实际商品系统的数据结构选择需要保存的部分。 ## 四、返回数据实际是什么样? 当前接口示例中的条码: 6906337301091 返回的商品信息包括“冠生园”“葱油压缩饼干”“上海冠生园益民食品有限公司”等基础内容,同时还包含规格、商品尺寸、毛重、净重、原产国、上市日期、保质期和最小销售单位。 整理成业务页面后,可以类似这样展示: |商品信息|查询结果| | --- | --- | |商品名称|葱油压缩饼干| |品牌|冠生园| |企业|上海冠生园益民食品有限公司| |规格|118g*48袋| |净重|118克| |毛重|128克| |原产国|中国| |保质期|720天| |最小销售单位|个| 这样比直接把整段 JSON 展示给业务人员更容易理解。 不过,接口返回的字段是否完整仍然要以实际商品数据为准。示例中 price、image 和 packaging_type 就出现了空值,因此程序不能默认每一个商品的所有字段都会有内容。 ## 五、字段为空是正常情况,前端要提前处理 商品数据接口比较容易遇到的一个问题,就是不同商品能够提供的信息完整程度并不完全一样。 例如当前 JSON 示例中: price 为空 image 为空 packaging_type 为空 这并不意味着整个查询失败,而只是这些字段在当前结果中没有数据。 因此前端不适合写成“只要一个字段为空就提示商品查询失败”。更合理的做法是根据实际返回内容展示,例如价格为空时不显示价格区域,图片为空时使用系统自己的默认占位图。 数据库设计也应该允许部分商品属性为空,而不是把所有字段都设置成必须存在。 ## 六、商品图片有一个特别容易忽略的限制 image 字段可以返回商品图片,但接口资料明确注明: **图片有效期为 24 小时,建议自行下载保存。** 这意味着如果电商或者商品管理系统需要长期展示商品图片,不适合把接口返回的 image 地址直接当成永久图片地址。 一种比较常见的处理思路是: 查询商品信息 → 获取 image → 保存到自己的图片存储 → 数据库保存新的长期图片地址 这样后续商品详情页不会因为原图片地址过期而突然失去图片。 当然,如果查询结果中的 image 本身为空,就需要按照系统自己的无图逻辑处理。 ## 七、price 字段能不能直接当成商品售价? 不建议直接这样理解。 接口确实提供 price 字段,字段说明为“价格”,但当前资料没有进一步说明它具体代表建议零售价、历史价格、参考价格还是其他价格口径。 而且当前 JSON 示例里的 price 本身就是空字符串。 对于电商和零售系统来说,更合适的方式是把条码查询结果作为商品基础数据来源,而实际销售价格仍然由自身商品系统维护。 也就是说: 条码查询解决“这是什么商品”,商品后台解决“我们卖多少钱”。 两者最好不要混成同一个字段逻辑。 ## 八、保质期字段也不能直接判断商品什么时候过期 接口提供 shelf_life 字段,例如当前示例返回: 720天 它表示的是商品保质期信息。 但“保质期 720 天”和“这件商品还有多少天过期”不是一个概念。 如果库存系统希望判断具体批次什么时候临期,还需要知道该批商品的生产日期或者实际批次日期,再结合保质期计算。 当前接口资料没有提供批次生产日期字段,因此不能仅根据 shelf_life 判断某一件库存商品当前是否临期。 这一点在库存管理场景中尤其容易混淆。 ## 九、商品尺寸和重量字段应该按字符串接收 width、height、depth、gross_weight 和 net_weight 在当前接口中都定义为 string。 示例返回的数据也是: 宽:131毫米 高:134毫米 深:23毫米 毛重:128克 净重:118克 也就是说,数值和单位已经组合在字符串中。 如果只是展示,可以直接按照接口结果保存和显示。如果后续要拿这些字段进行运费计算、仓储体积计算或者数值比较,则需要在业务层进一步拆分数值与单位。 在没有统一格式规则之前,不建议直接把这些字段强制转换成纯数字。 ## 十、分类字段可以怎么使用? 接口提供 category_code 和 category_name。 当前示例返回的分类名称是: 饼干、曲奇(耐储存) 如果零售系统本身已经有自己的商品分类体系,可以把接口分类作为商品建档时的参考,但不一定要直接替换自身分类。 因为不同企业的商品分类方式可能完全不同。例如同一个饼干商品,在便利店系统、电商平台和仓储系统里可能属于不同层级。 更稳妥的设计是: 外部商品分类 → 保存原始数据 内部商品分类 → 根据自身业务规则维护 这样后续即使企业调整分类体系,也不会影响原始条码数据。 ## 十一、扫码识别和商品查询应该分成两个模块 如果实际业务是“用户用摄像头扫码”,系统流程最好不要把识别和查询混成一个步骤。 可以拆成: 第一步:读取条码 通过扫描枪、摄像头或者条码识别能力获取条码数字。 第二步:查询商品 将得到的 barcode 传入商品查询接口,获得商品信息。 这样做的好处是两个模块职责比较清楚。如果扫码失败,可以定位到识别问题;如果已经拿到正确条码却查不到商品,则可以继续检查商品数据查询。 对于已经使用专业扫码枪或 POS 扫描设备的系统来说,第一步甚至可能已经由硬件完成,此时只需要处理商品查询即可。 ## 十二、电商商品发布可以怎么接? 电商后台新建商品时,运营人员往往需要填写大量基础资料。 如果商品已经有标准条码,可以先输入或扫描 barcode,再获取商品名称、品牌、企业、规格、重量等信息,并预填到商品编辑页面。 运营人员再继续补充平台特有的数据,例如销售标题、实际售价、库存数量、商品详情和营销图片。 这样可以把“商品标准信息”和“店铺经营信息”拆开: 商品基础档案:条码、商品名称、品牌、规格、重量等 店铺商品档案:售价、库存、促销信息、销售状态等 同一商品如果后续再次录入,也可以优先检查系统本地是否已经存在对应条码,减少重复建立商品档案。 ## 十三、仓储系统里应该怎么用? 仓储系统可以把条码作为 SKU 信息识别的一种入口。 例如商品入库时扫描条码,系统先检查本地商品库是否已经存在该 barcode。如果存在,就直接关联已有商品档案;如果不存在,再查询基础商品信息,由工作人员确认后建立新的商品记录。 这种方式比每次扫码都调用外部接口更容易控制数据一致性。 不过,商品条码查询提供的是商品基础资料,并不能直接告诉系统“当前库存还有多少件”。库存数量、入库批次、库位和出库记录仍然属于企业自身仓储系统的数据。 ## 十四、“无此条码数据”也是一种需要单独处理的状态 当前服务级错误码包括: |错误码|说明| | --- | --- | |207701|缺少必要参数| |207702|查询失败| |207703|无此条码数据(计费)| 其中 207703 比较值得注意。 它表示的是当前没有查询到该条码数据,而不是接口 KEY 或网络本身出现异常。并且当前资料明确注明该状态会计费。 因此业务系统最好把“没有商品数据”和“接口调用失败”分开处理。 例如前端可以提示: “暂未查询到该条码对应的商品信息,请手动补充。” 而不是统一显示成“系统错误”。 ## 十五、系统级错误不要和商品数据异常混在一起 系统级错误码包括: |错误码|说明| | --- | --- | |10001|错误的请求 KEY| |10002|该 KEY 无请求权限| |10003|KEY 过期| |10004|未知的请求源| |10005|被禁止的 IP| |10006|被禁止的 KEY| |10007|请求超过次数限制| |10008|接口维护| 这些错误表示的是接口调用环境问题,与某个商品有没有数据是两件不同的事。 例如 10003 应该进入接口凭证异常处理,而 207703 则可以让商品录入页面进入人工填写流程。 把这两类状态分开,后续日志和问题排查会清楚很多。 ## 十六、接入时最容易忽略的几个细节 第一,当前产品说明针对的是 13 位或 14 位商品条码。其他长度或类型的编码是否支持,不应该仅根据 barcode 参数自行推断。 第二,image 只有 24 小时有效期。如果需要长期使用商品图片,应按照资料说明自行保存。 第三,不要假设所有字段都有值。价格、图片、包装类型等字段都可能为空。 第四,shelf_life 只是保质期,并不是实际库存商品的到期日期。 第五,price 虽然存在,但当前资料没有进一步定义价格口径,不建议直接作为企业商品售价。 第六,商品条码数据和企业库存数据是两套概念。条码接口负责查询商品资料,库存数量仍应由自己的 ERP、WMS 或商品系统维护。 ## 写在最后 商品条码查询真正适合解决的,并不是“扫一下条码显示一个商品名称”这么简单,而是商品第一次进入业务系统时,如何减少基础资料的重复录入。 对于零售、电商和仓储系统来说,可以把条码作为商品档案的入口:先查询商品名称、品牌、规格、重量和其他基础属性,再结合企业自己的售价、库存、类目和经营数据建立完整商品记录。 开发过程中,更值得提前处理的是字段为空、图片有效期、价格口径、保质期含义以及“无此条码数据”等边界情况。 把这些数据边界设计清楚之后,商品条码查询才能比较自然地进入现有的商品管理流程,而不会把外部商品资料和企业自己的库存、售价等业务数据混在一起。

优秀的个人博客,低调大师

城市空气质量实况查询‑环境监测指标获取‑AQI 数据调取 API 接口介绍

# 前言 各类生活服务、出行类应用在开发过程中,往往需要接入城市实时空气质量数据。自行对接多渠道环境数据源,需要处理数据同步、格式归一、定时更新等一系列工作,开发维护成本较高。空气质量查询接口可获取国内城市实时环境监测数据,快速为业务注入空气质量实况能力。 ![](https://developer.qcloudimg.com/http-save/yehe-12007261/591bb888425b197d7c118e23127a3e60.png) # 核心能力 - 覆盖国内数百座城市,提供实时空气质量监测数据; - 提供多维度空气质量查询:查询全国370个城市空气质量、按全国城市空气质量排行查询、PM数按IP查询、PM数据按城市查询; - 包含多项污染物浓度指标:AQI 空气质量指数、空气质量等级、首要污染物,以及 PM2.5、PM10、二氧化硫、二氧化氮、臭氧、一氧化碳等; - 每半小时更新全国最多367个城市空气质量。 # 空气质量-全国城市空气质量查询 根据城市查询对应的空气质量。由于国家只发布了370个大城市空气质量,因此查询小地区返回上一级主要城市的PM25情况。 ## 请求说明 |名称|类型|必须|说明| | --- | --- | --- | --- | |area|String|是|城市名称| ## 返回样例 ``` { "code": 200,//返回码,详见返回码说明 "msg": "成功",//返回码对应描述 "taskNo": "325946705208507560688788",//本次请求号 "charge": true,//计费标志 "data": { "area": "杭州",//地区名 "o3": "22",//臭氧1小时平均,μg/m³ "area_code": "hangzhou", "num": "153",//排行 "pm10": "63",//颗粒物(粒径小于等于10μm)1小时平均,μg/m³ "co": "0.9",//一氧化碳1小时平均,mg/m³ "quality": "良好",//空气质量指数类别,有“优质、良好、轻度污染、中度污染、重度污染、严重污染”6类 "no2": "61",//二氧化氮1小时平均,μg/m³ "ct": "2024-11-02 23:10:00.012",//发布时间 "so2": "6",//二氧化硫一小时平均,μg/m³ "pm2_5": "34",//颗粒物(粒径小于等于2.5μm)1小时平均,μg/m³ "aqi": "57",//空气质量指数(AQI),即air quality index,是定量描述空气质量状况的无纲量指数 "primary_pollutant": "颗粒物(PM10)",//首要污染物 "o3_8h": "79"//臭氧8小时滑动平均,μg/m³ } } ``` # 空气质量-全国城市空气质量排行榜 查询全国367个城市的空气质量排行榜。 ## 返回样例 ``` { "code": 200,//返回码,详见返回码说明 "msg": "成功",//返回码对应描述 "taskNo": "823469219158756173215449",//本次请求号 "charge": true,//计费标志 "data": { "list": [ { "area": "昌都",//地区名 "o3": "30",//臭氧1小时平均,μg/m³ "area_code": "changdou", "num": "1",//排行 "pm10": "15",//颗粒物(粒径小于等于10μm)1小时平均,μg/m³ "co": "0.6",//一氧化碳1小时平均,mg/m³ "quality": "优质",//空气质量指数类别,有“优质、良好、轻度污染、中度污染、重度污染、严重污染”6类 "no2": "12",//二氧化氮1小时平均,μg/m³ "ct": "2024-11-03 09:40:00.011",//发布时间 "so2": "6",//二氧化硫一小时平均,μg/m³ "pm2_5": "9",//颗粒物(粒径小于等于2.5μm)1小时平均,μg/m³ "aqi": "15",//空气质量指数(AQI),即air quality index,是定量描述空气质量状况的无纲量指数 "primary_pollutant": "",//首要污染物 "o3_8h": "30"//臭氧8小时滑动平均,μg/m³ }, ...... ] } } ``` # 空气质量-PM数据-按城市查询 查询单个城市及其下属的监测点的PM数据,包括AQI,空气质量,指数类别,首要污染物,PM 2.5,细颗粒物,PM 10,可吸入颗粒物, 一氧化碳, 二氧化氮, 臭氧1小时平均, 臭氧8小时平均, 二氧化硫等信息。每8小时更新367个城市下各个监测点相关详细PM数据。 ## 请求说明 |名称|类型|必须|说明| | --- | --- | --- | --- | |city|String|是|城市| ## 返回样例 ``` { "code": 200,//返回码,详见返回码说明 "msg": "成功",//返回码对应描述 "taskNo": "518352325189267867664895",//本次请求号 "charge": true,//计费标志 "data": { "pm": { //PM结构数据 "area": "杭州",//城市名称 "o3": "24",//臭氧1小时平均,μg/m³ "area_code": "hangzhou", "num": "93",//排行 "pm10": "46",//颗粒物(粒径小于等于10μm)1小时平均,μg/m³ "co": "0.7",//一氧化碳1小时平均,mg/m³ "quality": "优质",//空气质量指数类别,有“优质、良好、轻度污染、中度污染、重度污染、严重污染”6类 "no2": "38",//二氧化氮1小时平均,μg/m³ "ct": "2024-11-03 09:40:00.011",//发布时间 "so2": "6",//二氧化硫一小时平均,μg/m³ "pm2_5": "31",//颗粒物(粒径小于等于2.5μm)1小时平均,μg/m³ "aqi": "42",//空气质量指数(AQI),即air quality index,是定量描述空气质量状况的无纲量指数 "primary_pollutant": "",//首要污染物 "o3_8h": "11" //臭氧8小时滑动平均,μg/m³ }, "siteList": [ //下属的监测站的PM数据。此列表数据只在【单个城市PM】接入点中存在。 { "no2": "7", //二氧化氮1小时平均,μg/m³ "site_name": "市府大楼", //监测点名称 "ct": "2022-07-06 11:39:00.707",//发布时间 "o3": "59",//臭氧1小时平均,μg/m³ "so2": "9", //二氧化硫一小时平均,μg/m³ "pm2_5": "7",//颗粒物(粒径小于等于2.5μm)1小时平均,μg/m³ "aqi": "19",//空气质量指数(AQI),即air quality index,是定量描述空气质量状况的无纲量指数 "pm10": "17", //颗粒物(粒径小于等于10μm)1小时平均,μg/m³ "primary_pollutant": "-",//首要污染物 "co": "0.6",//一氧化碳1小时平均,mg/m³ "quality": "优质", //空气质量指数类别,有“优、良、轻度污染、中度污染、重度污染、严重污染”6类 "o3_8h": "59" //臭氧8小时滑动平均,μg/m³ }, ...... ] } } ``` # 空气质量-PM数据-按IP查询 根据ip查询单个城市及其下属的监测点的PM数据,包括AQI,空气质量,指数类别,首要污染物,PM 2.5,细颗粒物,PM 10,可吸入颗粒物, 一氧化碳, 二氧化氮, 臭氧1小时平均, 臭氧8小时平均, 二氧化硫等信息。每8小时更新367个城市下各个监测点相关详细PM数据。 ## 请求说明 |名称|类型|必须|说明| | --- | --- | --- | --- | |ip|String|是|ip地址| ## 返回样例 ``` { "code": 200,//返回码,详见返回码说明 "msg": "成功",//返回码对应描述 "taskNo": "569922565184110844672479",//本次请求号 "charge": true,//计费标志 "data": { "pm": { //PM结构数据 "area": "杭州",//城市名称 "o3": "24",//臭氧1小时平均,μg/m³ "area_code": "hangzhou", "num": "93",//排行 "pm10": "46",//颗粒物(粒径小于等于10μm)1小时平均,μg/m³ "co": "0.7",//一氧化碳1小时平均,mg/m³ "quality": "优质",//空气质量指数类别,有“优质、良好、轻度污染、中度污染、重度污染、严重污染”6类 "no2": "38",//二氧化氮1小时平均,μg/m³ "ct": "2024-11-03 09:40:00.011",//发布时间 "so2": "6",//二氧化硫一小时平均,μg/m³ "pm2_5": "31",//颗粒物(粒径小于等于2.5μm)1小时平均,μg/m³ "aqi": "42",//空气质量指数(AQI),即air quality index,是定量描述空气质量状况的无纲量指数 "primary_pollutant": "",//首要污染物 "o3_8h": "11" //臭氧8小时滑动平均,μg/m³ }, "siteList": [ //下属的监测站的PM数据。此列表数据只在【单个城市PM】接入点中存在。 { "no2": "7", //二氧化氮1小时平均,μg/m³ "site_name": "市府大楼", //监测点名称 "ct": "2022-07-06 11:39:00.707",//发布时间 "o3": "59",//臭氧1小时平均,μg/m³ "so2": "9", //二氧化硫一小时平均,μg/m³ "pm2_5": "7",//颗粒物(粒径小于等于2.5μm)1小时平均,μg/m³ "aqi": "19",//空气质量指数(AQI),即air quality index,是定量描述空气质量状况的无纲量指数 "pm10": "17", //颗粒物(粒径小于等于10μm)1小时平均,μg/m³ "primary_pollutant": "-",//首要污染物 "co": "0.6",//一氧化碳1小时平均,mg/m³ "quality": "优质", //空气质量指数类别,有“优、良、轻度污染、中度污染、重度污染、严重污染”6类 "o3_8h": "59" //臭氧8小时滑动平均,μg/m³ }, ...... ] } } ```

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册