关于api:不仅仅是一把瑞士军刀-Apifox的野望和不足

申明:本文内容不波及任何 Apifox 的性能介绍,一来网上这方面的文章曾经车载斗量,二来 Apifox 自身的用户体验做的十分好,对于开发者而言学习老本根本为零。 阮一峰:不论你是前端开发还是后端开发,只有我的项目是服务架构,它可能会大大晋升你的开发效率。 虫师:咱们很难把它形容为一款接口管理工具或接口自动化测试工具,它加强了团队合作能力,这对一个研发团队而言很重要。 池建强:Apifox,这是一代更比一代强。 什么是Apifox?看了一众大咖们对 Apifox 拍案叫绝,你可能会好奇 Apifox 到底是何方神圣?依据官网定义,Apifox 是 API 文档、API 调试、API Mock、API 自动化测试一体化合作平台,定位 Postman + Swagger + Mock + JMeter。如果你也曾应用过 Apifox,置信你会深表同意。 那么问题来了,在流行小而美的 API 工具的当下,为什么会横空出世一个“瑞士军刀”般存在的 Apifox?答案就在 Apifox 的主旨外面:节俭研发团队的每一分钟。 在 Apifox 之前,为了达成对 API 语义的了解和实现上的一致性,前端、后端、测试使出十八般武艺,定义 API 用 Swagger,生成文档用 YAPI,前端自测用 Mock,接口测试用 Postman,性能测试用 JMeter,各类配置、数据、链接满天飞,重要的事件说三遍啊说三遍。有了 Apifox 之后,前端、后端、测试之间本来去中心化的 P2P 通信形式变成以 Apifox 为核心的星型通信形式,通信对象从本来充斥不确定性的人,变成稳固牢靠的平台,各类配置、数据、链接也有了对立治理的中央,团队通信老本和 API 治理老本大幅升高。 Apifox的野望如果你认为一体化合作平台就是 Apifox 的所有,那你可能低估了 Apifox 的野心。 先来看下 Apifox 的免费模式, 是的,你没有看错,免费版即享“无任何限度”,不限团队人数、不限性能、不限项目数、不限接口数,如此豪华的收费套餐,放眼全网也很难找到第二家(SaaS 平台)。 再来看下更新日志,注意以下更新: [2021-03-14] 1.2.0 新增【在线分享接口文档】性能。[2021-10-29] 1.4.10 上线 API Hub性能。1)通过API Hub查找/发现别人公开的 API 我的项目。2)可将我的项目公布到API Hub(设置为公开我的项目即可),容许任何人通过API Hub拜访、克隆该我的项目。[2022-01-11] 1.4.17 公开我的项目反对通过 web 拜访、运行。看懂了吗?API Hub 才是 Apifox 真正的野望,打造凋谢 API 共享平台,连贯各类企业级 API,减速企业商业翻新,成为企业之间的“交友”平台。有了 API Hub,企业之间谈单干,见面第一句话就是:PPT is cheap, show me the API! ...

March 13, 2022 · 1 min · jiezi

关于api:无代码软件集成助力网校打通用户身份管理屏障

一、用户背景近年来,随着互联网飞速的倒退,国内教育也开始向着网络信息化方向迈进。凭借网络科技微小的劣势和便当,在线网校迅速倒退。 许多网校都会在本人的官网或者是 APP 上售卖课程,除此之外,一些网校为扩大业务也会在其余平台上进行宣传,比方在小鹅通上做 1 元/9.9 元的高价引流课程,客户购买后能够间接在小鹅通上观看课程。 如果网校企业应用了 Authing 作为 B2C 客户身份信息中台,想在 Authing 中迅速积淀购买引流课程的客户信息,则能够通过集简云作为连接器买通小鹅通和 Authing,实现用户数据同步,以实现企业对客户身份的对立治理和高效利用,从而更好的服务用户,进步经营效率。但这时网校面临一个问题:小鹅通和 Authing 两个零碎之间的数据并没有买通。 对于公司来说,但凡购买引流课程的客户都会被视为“潜在动向客户”,为尽力满足客户的需要,通常局部网校会抉择”看起来比拟间接”的开发接口的形式,但开发接口存在肯定的弊病: 耗时耗力且研发部门须要 all in。一个想法从产生到落地执行往往须要对接多个部门,且简短的会议,消耗大量的人力物力等因素对于专一做教育的网校来说,会制约其业务的倒退。 老本高且不能满足灵便多变的业务流程。一家网校不止在小鹅通一个平台上进行宣传,不同的平台须要的接口也会有所不同,老本极高,虽为客户提供优质的服务很重要,然而最大限度地节约资源也等同重要。 那么,无需任何代码开发,就能够将两个软件之间数据买通的问题该如何解决呢? 二、 解决方案这种将软件与软件进行连贯,买通不同软件之间的数据屏障,正是集简云所解决的问题,只须要在集简云中搭建一个数据流程即可实现业务流程自动化。 根据上述场景形容,咱们最终会帮忙网校实现每当客户在小鹅通上购买课程后,通过集简云,会将客户的手机号、邮箱等信息主动同步到 Authing 当中创立账户,开启相应的权限,这样客户既能够在小鹅通上观看课程,也能够在网校的官方网站/app 上进行查看,让用户不受平台限度,进步体验感。 上面咱们来看一下,如何通过集简云,疾速买通小鹅通与 Authing 两个零碎之间的数据屏障。 三、 成果展现流程:【小鹅通-Authing 】 (小鹅通→ Authing 流程图) (小鹅通→ Authing 数据同步效果图)在集简云搭建此流程无需任何代码常识,企业各个业务部门皆可应用,业务流程自动化与智能化是企业新的增长引擎。

February 10, 2022 · 1 min · jiezi

关于api:无代码软件集成助力零售业提升工作效率与客户满意度

一、挪动互联网环境下对客户服务的挑战随着人们生存程度一直地进步,顾客的维权意识也越来越强了,大家除了关注商品质量,也同样关注商家提供的服务。同时很多商家也意识到,无论是售前、售中还是售后服务,只有服务好顾客,能力确保店铺的失常运行,尤其售后服务,是整个服务流程的重点之一,且售后服务的优劣将会间接影响顾客的称心水平。随着互联网与挪动技术的倒退,对批发行业客服带来了更大的挑战: 销售渠道多样化,难以汇总和自动化解决:客户可能应用不同渠道购买商品,比方门店,小程序,微商城,官网,抖音等等,并在不同的渠道提交售后申请,售后信息的汇总和解决问题难以解决。 客户身份在不同零碎,难以对立辨认和治理:客户在征询问题时,难以自动识别用户身份,须要征询用户手机号等身份信息,而后在不同的零碎中查问信息,而后能力解决。如果遇到简单的问题,或者用户屡次沟通不同的客服人员,则会导致屡次询问和查问用户信息,升高工作效率。 二、 客户背景介绍某驰名服装连锁企业是国内上市服装企业的子品牌,在全国领有超过200家门店。其200多家门店应用微盟智慧批发零碎做POS收银,用户信息,订单信息与售后信息管理。 另外一方面,其应用智齿客服零碎做客户服务零碎解决售前与售后问题。 企业将智齿客服零碎嵌入到微盟小程序中,用户通过点击小程序客户服务按钮后通过智齿客户服务零碎与客户沟通。 企业面对的问题与挑战:每次都要询问用户信息:用户在微盟中的身份信息与智齿中的客户信息没有关联,因而客服人员须要每次都询问客户手机号码后,能力查问用户身份。如果一个用户征询屡次,每次都要告知本人的手机号给客服,升高客户满意度。 一次征询须要查问多个零碎:客服人员须要查问客户资料表,查问订单表,再查问售后订单表能力获取足够的信息服务客户,造成大量额定工作。 三、 集简云解决方案集简云立志通过无代码集成iPaaS平台帮忙企业连贯企业外部与内部零碎,构建自动化的业务流程,像这种买通两个零碎之间的数据屏障,实现数据主动同步,正是集简云所解决的问题,只须要在集简云中搭建一个数据流程即可实现业务流程自动化。 步骤1:触发动作【微盟智慧批发—当新增售后音讯时】步骤2:执行动作【微盟智慧批发—查问订单详情】步骤3:执行动作【微盟智慧批发—查问售后单详情】步骤4:执行动作【微盟智慧批发—查问用户信息】步骤5:执行动作【微盟智慧批发—查问用户渠道信息】步骤6:执行动作【微盟智慧批发—查问客户详情】步骤7:执行动作【执行代码—执行Python代码,批量提取订单中的商品名称和数量】步骤8:执行动作【智齿客服—创立工单(客户提交)】步骤9:执行动作【智齿客服—依据手机号查问客户信息】步骤10:执行动作【智齿客服—更新客户信息】 用户小程序中征询时会主动带入微信openid, 通过openid自动识别集简云传入的客户信息和订单信息。因而每当客户开始征询时,客服人员在智齿客服后盾能够主动看到用户的身份信息和订单信息,售后信息等,无需再要求用户提供手机号,以及手动的到多个零碎表单中查问信息。 更多场景示例微盟智慧批发+CRM零碎:当微盟智慧批发有客户下单后,主动同步客户信息到企业CRM零碎微盟智慧批发+短信推送:当微盟智慧批发有商品销售价格变更时,发送短信音讯揭示微盟智慧批发+办公OA零碎:当微盟智慧批发有客户下单后,推送OA音讯揭示相干员工及时查看有赞商城/抖店/WordPress+微盟智慧批发:当其余电商零碎有订单成交时,自动更新微盟智慧批发中的库存信息自动化营销零碎+微盟智慧批发:当用户满足指定行为条件后,获取微盟智慧批发中的商品信息并推送给用户CRM零碎+智齿客服:当CRM有新增客户信息时,智齿客服主动创立客户信息可依据手机号查问客户信息表单零碎+智齿客服:当用用户提交表单时,主动同步到智齿客服创立工单跟进或者增加客服外呼电话工作MySQL数据库+智齿客服:当用户注册或者购买产品后,同步更新用户信息在客服零碎中,以便后续用户征询时主动展示用户信息,购买商品等要害数据电商零碎+智齿客服:当电商零碎零碎有用户下单时,主动同步到智齿客服创立服务工单,便于用户征询订单相干问题

February 9, 2022 · 1 min · jiezi

关于api:最好的-6-个免费天气-API-接口对比测评

本文首发:最好的 6 个收费天气 API 接口比照测评 - 卡拉云 天气 API蕴含丰盛的天气数据,不仅有实时温度、湿度、风速、降水等这些根底数据,还有过来的历史天气数据和将来的天气预测数据,顶级的天气 API 接口还会包含天气灾祸预警,空气质量指数,日出日落、潮汐及月相相干的地理气象等数据。天气 API 也并不难取得,本教程将介绍 6 款国内外收费的天气 API,并手把手教你搭建一套属于本人的天气数据看板。 收费的天气 API 概览 - 如何选到收费又稳固的天气 API 接口本文所介绍的天气 API 均是我本人接入应用过的,它们是从泛滥天气 API 中甄选出的 6 款高质量收费天气 API 。这 6 款 API 都是根底收费增值付费的商业模式,这种模式保障了收费用户能够长期稳固的应用,不必放心数据源挂掉。特地是本文介绍的寰球天气 API 对收费用户十分敌对,收费凋谢的数据更多样,限度更少,我会在本文后半段具体介绍。 本文具体解说以下 6 个收费天气 API 的特点及接入办法 高德天气 API -收费、 稳固、极简,适宜天气预报根底需要心知天气 API - 收费、轻便、业余,适宜天气预报的高级需要和风天气 API - 收费和付费同权限,非商业有限收费,含空气质量、地理气象OpenWeather - 收费 100 万次/月 分钟级实时预报,天气云图AccuWeather - 寰球最大的气象数据服务商,历史悠久,数据精准,天气 API 王者Visual Crossing - 非开发者应用敌对 50年历史气象数据收费调用一. 高德地图天气 API - 稳固、收费、极简 ...

December 31, 2021 · 3 min · jiezi

关于api:最好用的七大顶级-API-接口测试工具

本文首发:最好用的七大顶级 API 接口测试工具 - 卡拉云 当初 API 接口曾经成为软件开发重要的组成部分,因为 API 并没有 GUI 图形界面,无奈直观的对接口进行测试,所以对于前后端开发来说,找到一套趁手的工具对 API 接口进行测试,理解开发的程序是否合乎预期非常重要。面对批量的 API,手动测试变得十分低效,自动化 API 接口测试工具,帮咱们进步测试效率的同时,更能帮咱们保障程序的稳固和安全性。本文介绍 7 款顶级 API 接口测试工具。 测试金字塔 - API 接口测试的重要性与其让测试组东搞西搞,不如让他们间接测 API ,ROI 会更高一些。下图为展现了 API 在整个软件中的重要性。 在测试 API 接口时,应该把测试重点放在调用 API 形式上,因而在整个测试过程中,咱们应该查看 API 接口在不同条件下是否返回正确的值。API 返回的值,通常是胜利、失败的状态、某种数据或对另一个 API 调用。手动测试尽管也行,但大家还是喜爱应用自动化测试的办法对 API 进行测试,批量的效率和手动比,基本不是一个数量级。咱们能够通过趁手的 API 接口工具,对 API 接口进行功能测试、负载测试、平安测试、可靠性测试等。 对 API 接口测试的重要性有了意识后,咱们再来谈谈七大接口测试工具吧。 1.Postman 接口测试工具Postman 的创始人 Asthana,在 2012 年公布了 Postman 第一个版本,过后只是一个简略的 API 交互工具,当初 Postman 曾经是一家领有 50 万家企业 1700 万开发者的测试工具了。Postman 的次要劣势是它的易用性,无需注册,简略设置就能马上测起来。Postman 敌对的测试界面,对于手动测试以及探索性测试来说,十分实用。最棒的是你还能够和共事共享测试数据,一键分享。 ...

December 15, 2021 · 2 min · jiezi

关于api:南瓜电影-7-天内全面-Serverless-化实践

作者 | 庄徐麟 从咱们理解 SAE 产品到整体上线一共是 7 天工夫。3 天实现外围利用 API 网关上线,第 5 天验证完结 100% 流量打到 SAE 上,第 6-7 天把其余 30 多个零碎疾速迁徙到 SAE,整个过程十分顺利。应用 SAE 后,运维效率晋升 70%,老本降落超过 40%,扩容效率晋升 10 倍以上,这是给咱们带来的直观扭转 。_ 南瓜电影成立于 2015 年,是国内近两年倒退十分迅速的流媒体平台,凭借着无广告、纯付费的商业模式,在影迷圈中打响了肯定的知名度;之后又靠着很强的社区互动性(AI 智能举荐、影评互动、通过放映厅实现线上“云观影”等),迅速实现会员增长及流媒体市场占位;接下来将逐步往多元化视频平台倒退:如纪录片、各类自制节目等。 作为互联网风口上的行业,流量和生命周期会因为市场风向的变动而有着截然不同的体现,这对企业的翻新和低成本试错提出了更高的要求。南瓜电影的整体利用架构也随着业务的高速倒退,继续一直地进化。明天我次要从三个局部来和大家分享这一段倒退历程: 痛点:回顾南瓜电影过后的业务、架构现状和痛点。 选型:分享在技术选型之路上咱们的思考和决策,以及为什么最终会抉择应用 SAE 这款产品。 实战:咱们是怎么一步步落地、在短短 7 天内将整个平台几百台服务器,30 多个零碎全面 Serverless 化的。 痛点从守业之初,南瓜电影的整体利用架构就构建在阿里云之上,是一个典型的“生在云上,长在云上”的企业。底层应用阿里云 ECS,基础设施、中间件,数据库、大数据服务、云平安等也全副应用阿里云产品,最大化云的价值。根底服务之上是咱们自研的能力核心,基于算法和视频加强能力,提供会员、自适应码率、搜索引擎、影评、放映厅等服务。通过 SLB 寰球调度以及 WAF 平安接入对各种用户提供服务。下层承接多端,根本涵盖了市面上全副的终端类型:包含手机、Pad、网页以及各种客户端、车载设施等。 南瓜电影初始利用架构 但随着业务的一直倒退,基于 ECS 的运维架构逐步裸露了很多问题,次要有: 1)弹性扩容太慢:流量洪峰时,需长期购买新机器再逐台部署,十分耗时也保障不了零碎 SLA。 2)发版慢&易出错:互联网频繁公布是常态,但每次几百台服务器一台台部署发版十分慢,一不小心就出错。也尝试过脚本化部署,跑顺的确省事,但当服务器组一多,脚本一直批改过程中,万一两头卡壳了,定位问题十分艰难。 3)系统维护老本高:传统集群运维繁琐,人员技能要求十分高:既要精通 lua /ansible 脚本等,又要懂云产品网络配置和监控运维。晚期公司并没有专职运维人员,消耗了开发大量的精力,十分之痛。 4)容量布局难,资源利用率低:对流媒体行业,高峰期个别在中午或早晨,其它工夫拜访都比拟低,但很难精筹备容。咱们个别是依照峰值长期固定保有服务器,资源利用率绝对比拟低。 5)权限调配繁琐:面对企业多租户时,权限隔离往往是一个十分头疼的问题。尤其是新人到岗或者跨团队联调时,配置用户组、RAM 权限,新机器登陆连贯形式,十分繁琐,账号管理人员也时常会成为瓶颈。 一场热映电影减速了南瓜电影技术升级思考 置信会有很多企业也面临和咱们一样的难题,同时也制约着公司的倒退。但开发人员都存在肯定的惰性,认为只有不出事就先持续耗着。而真正让咱们下定决心做技术升级的,还得感激 19 年的那场热映电影。 那天早上接到同学的电话说业务压力大,我说:“不可能,个别早上流量比拟少”, 他说:“不晓得,各种业务都开始预警,我曾经开启了预案,一直的买买买机器了”。起初才晓得 1 个小时内新增注册用户冲破 80W+(是平时峰值的 5 倍以上),对南瓜电影来说是一个微小的挑战和时机。很快服务器间接崩了,流量总入口 API 网关撑不住,紧接着后端服务、数据库都异样。 ...

December 8, 2021 · 2 min · jiezi

关于api:当API成为服务

在新冠疫情和一直变动的市场环境的影响下,简直所有行业都扭转了其经营方式,企业数字化转型的需要急剧增长。而数字化转型依赖于企业的整合能力,行将其服务、能力和资产打包到可反复利用的模块化软件中。每个企业都在其零碎中贮存了有价值的数据,然而要利用好这些价值,就要通过API。 API是什么?如果上网搜寻,大略会失去应用程序编程接口的答复。如果扩大开来说,API是一些事后定义的函数,目标是提供应用程序与开发人员基于某软件或硬件得以拜访一组例程的能力,而又无需拜访源码,或了解外部工作机制的细节。再艰深一点,就是当你从手机传文件到电脑上时,要用到数据线传输,连贯这个数据线的接口就是API。 API能够用来连贯不同的软件,并通过接管申请和发送响应使它们彼此实现数据交互。它扩大了应用程序或网站的性能,简化了信息共享。同时,API能够连贯到任何新零碎,而无需在原始零碎,程序或硬件上进行任何更改的个性,使得用户只需几行代码即可与任何新零碎连贯,并提供可伸缩性以解决更简单的事务。并且,基于自定义和自助服务而构建的API,让用户能够在多个平台和应用程序之间重复使用和交互数据,帮忙开发人员缩小许多重复性工作和把工夫和精力花在真正有价值的我的项目上,从而进步了开发人员的生产力。 企业须要API的能力突破数据孤岛,让数据在不同环境中应用,包含将其与合作伙伴及其他第三方有价值的资产联合起来,帮忙企业达到未知的畛域。即便一些零碎从未设计互通能力,API 也能让开发人员轻松拜访并组合不同零碎中的数字资产,从而更好地实现整体协同。 在云计算时代,如果客户违心将本人的利用构建在SaaS上时,如果将本人的API 集成到第三方搭档的业务中,最终客户每订阅一份服务,你的API就能获取一份相应的客户支出分成。API提供“服务”的商业模式就此造成。 现在,API已在软件、Web和挪动利用程序开发畛域无处不在,互联网商业翻新和传统企业数字化转型都离不开API经济或API策略,能够说,API就是传统行业价值链全面数字化的关键环节,API连贯的曾经不仅仅是零碎和数据,还有企业外部职能部门、客户和合作伙伴,甚至整个商业生态。它意味着制造业企业把外部的制作工厂、产品等物理资产数字化,把企业领有的数据、服务和业务能力以API的模式凋谢给生态系统各参与方,实现业务能力的互联互通,参与方共生共赢的新的价值网络。 互联网曾经证实了API能够放慢高级自主服务能力的速度和翻新。在大概16000个凋谢API的反对下,开发者们能够在几天内实现一个想法,而后疾速规模化或者淘汰掉。当制造业企业把API作为企业连贯互联网的数字化的接口方式,以API为外围做生态集成,它的产品和能力就能够接触到更宽广的群体以及消费者,API经济带来的影响力也就能够扩大到无限大。在不久地将来,或者就是API连贯所有的世界。

December 7, 2021 · 1 min · jiezi

关于api:程序员快速查询api文档方法汇总

一、借用Google 范畴检索设置步骤右键chrome search bar,抉择治理搜索引擎增加搜索引擎,增加如下内容(设置登程关键词)菜鸟教程https://www.google.com/search?newwindow=1&biw=1920&bih=974&noj=1&q=%s+site%3Ahttp%3A%2F%2Fwww.runoob.com%2F&oq=%s+site%3Ahttp%3A%2F%2Fwww.runoob.com%2F&gs_l=serp.12...28391.28675.0.30427.3.3.0.0.0.0.155.155.0j1.1.0....0...1.1.64.serp..2.0.0.cP6AQPTxH68mdnhttps://www.google.com/search?rlz=1C1CHWL_zh-cn__848__848&ei=ovkIXYGGBKyw0PEP0vG72Ag&q=%s++site%3Ahttps%3A%2F%2Fdeveloper.mozilla.org%2Fzh-CN&oq=%s runoob的长处反对多种语言(javascript, typescript, css, html, git ,liunx 命令,jquery...)中文反对在线测试权威信息源举荐:js, html,css: mdn[typescript]英文:(https://www.typescriptlang.or...)长处:灵便(可设置任意网站的范畴检索) 组件库:antd, elementuijs框架:react ,vue跨平台收费反对含糊搜寻内容实时,相比本地下载的文档毛病:输出时不足相似ide的主动联想性能,结构性上差一点依赖网络二、应用dashmac用户:dash (免费)window用户(dash的移植版):Zeal、[Velocity](免费)(https://velocity.silverlakeso...) dash次要性能反对api查问 离线查问输出时联想提醒指定/多个 语言查问反对笔记J反对代码片段(不是本期重点,略)api主动补全,联想性能 反对导航栏 毛病:英文 // 能够强制本人看英文文档,可能也变成了长处离线代码三、在线版在线版: http://devdocs.io/

November 30, 2021 · 1 min · jiezi

关于api:整理记录一些好用的随机图API

最近本人博客应用的随机图API有些不稳固,本人又去收集了一些有意思的随机图API,这里做一个整顿记录 留神!!!本文链接最初测试工夫----2021年11月21日 主题作者Tagaki的API(有时候会挂) https://api.lixingyong.com/ap...保罗API 应用文档https://api.paugram.com/wallp...暗鸦API 应用文档因为分类太细了,自行去站点查看墨天逸API 应用文档https://api.mtyqx.cn/api/rand...https://api.mtyqx.cn/tapi/ran...姬长信API 应用文档https://api.isoyu.com/aipc_an...Unsplash API 应用文档https://source.unsplash.com/r...https://source.unsplash.com/u...性能挺多的,自行去站点查看樱花API 应用文档https://www.dmoe.cc/random.phpEEE.DOG API 应用文档https://api.yimian.xyz/img这个图不错然而每日调用下限100且尺寸不太适合做PC壁纸西方Project API 应用文档https://img.paulzzh.com/touho...参考文档 -- 15个随机图片API 我是 fx67ll.com,如果您发现本文有什么谬误,欢送在评论区探讨斧正,感谢您的浏览! 如果您喜爱这篇文章,欢送拜访我的 本文github仓库地址,为我点一颗Star,Thanks~ :) 转发请注明参考文章地址,非常感谢!!!

November 21, 2021 · 1 min · jiezi

关于api:如何调用淘宝天猫API获取商品实时销量数据

背景在很多行业,比方商品采集、登载、直播、数据分析行业都须要用到相干的销量接口,然而官网个别又没有凋谢这些接口,怎么办? 解决方案目前支流的计划都是逆向APP获取数据,然而这个不是个别人又能力去做的,而且有危险,不要轻易尝试。加上淘宝变动频繁,防爬越来越严,技术难度和老本也越来越大,没有能力的也能够找第三方api提供商 参考示例{ "code": 200, "msg": "success", "data": [ { "itemId": "626727226313", "monthSales": "41", "totalSales": "836", "stock": "791", "isSale": "true", "createTime": "1635911415000" } ]}

November 8, 2021 · 1 min · jiezi

关于api:日均数十亿访问量解读个推API网关高能演进

近日,个推服务端技术专家李白受邀参加SegmentFault D-Day 线上技术直播流动,与来自头部互联网企业的后端技术专家们共探 “后端架构演进之路”。李白以“API网关演进之路”为主题,分享了个推基于golang进行API网关建设的实践经验和深度思考。 ★以下为李白演讲干货整顿: API网关之源起API网关是随“微服务”概念而衰亡的一种架构模式。在微服务拆分过程中,本来宏大的单体利用和业务零碎被拆分成许多微服务零碎进行独立保护和部署,导致API规模成倍增长,API治理难度日益减少;同时,子系统通过API对外提供能力时,还会存在通用能力反复建设的问题。因而,应用API网关对立公布和治理API逐步成为一种架构趋势。 在个推,公司的音讯推送、金融风控等业务外围零碎均是基于微服务架构,局部零碎也存在自建的网关模块。随着不同零碎之间的依赖越来越多,高效进行接口治理的需要日益迫切。因而,个推很早就引入了对立的API网关,来解决权限管制、流控、服务降级、灰度公布、版本治理等一系列问题。 1、个推晚期API网关2015年,SpringCloud的诞生极大促成了微服务架构的倒退和风行。个推也是在这一时期,依赖于SpringCloud gateway构建了本人真正意义上的API网关。 SpringCloud在生态上比拟敌对,有很多能够开箱即用的监控和容错组件,但因为不反对流量和平安治理,所以无奈很好地满足后续公司进行API治理的需要;尤其是个推起初建设数据中台,更亟需一个对立的API网关来承当数据中台的入口流量。此外,在开发语言上,SpringCloud只反对Java,适用性无限;且存在性能不现实、运维难度大等有余。 因而,为了实现更弱小的API治理能力、简化接入和运维形式,同时也为了更好地适应公司数据中台建设需要,个推抉择自研API网关。 2、个推自研API网关2.1 自研指标个推建设API网关的几个要害指标: ✦ 1) 要可能对API残缺生命周期进行对立治理 比方,在API设计上,要对立标准,规定API必须有归属服务和标签,做到API设计上的隔离;设计实现后要可能间接调试,主动生成测试代码;公布时,对API流量要做到精细化管制,反对服务的灰度公布;在API运行过程中,要可能对API调用状况进行全方位的监控和告警,对呈现问题的服务可能及时地熔断隔离;下线后可能及时回收资源。 ✦ 2)须要有欠缺的性能组件,来解决再一次申请过程 在整个申请链路中,咱们设计实现了链路追踪、日志、鉴权、限流、熔断、插件等一系列外围性能。 ✦3)保障“三高”的同时,用户迁徙和接入要简略 这一点其实是说API网关要便于运维和应用,同时要提供各种指标检测性能,且反对主动容错和弹性扩容。 2.2 技术选型基于以上的指标设计和技术调研之后,咱们抉择将golang作为自研API网关的主力开发语言。之所以抉择golang,有以下几个起因: ✦ 1)个推在做多机房容灾建设和数据拆分迁徙过程中,设计了gproxy-codis和gproxy-es,并曾经搭建了一套proxy集群来路由不同的用户。这些proxy到目前为止运行良好,一些大的集群单机QPS超过6W。在这些我的项目的开发过程中,咱们积攒了不少的开发教训和根底组件,外面的很多轮子都是能够间接复用的。因而,咱们应用golang并基于现有的这些组件,开发一套gproxy-http就绝对省力得多。 ✦ 2)golang语言自身人造反对高并发,开发速度快,最重要是节俭机器老本。 ✦ 3 )golang作为云原生框架应用最多的语言,golang上的技术积淀也是为个推云原生建设铺路。 2.3 设计与实现确认指标和技术选型之后,接下来就是一些具体的设计与实现。 ✦ 1) 整体架构 个推API网关的整体架构设计,如图所示: 首先是一个Web治理平台,API的创立、公布和后续治理都可在治理平台上配置实现;配置实现后,会下发到配置核心告诉到网关,同时网关也会定时拉取全量的API配置;而后是网关的一些外围组件,比方插件引擎,次要是执行配置的一些插件。转发引擎也是API网关的外围模块,个推的转发引擎反对http、grpc,同时还有个推自研的gcf协定,而在数据中台的业务场景下,也反对了kafka的数据推送能力。 ✦ 2) 插件服务 从图中能够看到,个推API网关整体架构里有一个独立的插件服务。这个设计的外围起因是golang是类C语言,打包后是可执行文件,而golang的原生插件是间接编译好的,不反对更新和卸载,所以也不能在界面上间接新增和更新插件。基于此起因,咱们应用Java开发了一个插件服务,利用Java动静的语言个性,以灵便地反对插件的新增、更新和卸载。 网关通过grpc与插件服务通信,性能上有肯定损耗。为了尽可能减少性能的损耗,咱们把加密、特定的序列化相干插件都应用golang的一个原生插件去实现,一些业务自定义比拟强的组件则举荐应用Java插件服务。 ✦ 3) 资源隔离 资源隔离是实现零碎高可用的罕用伎俩,在隔离设计上次要有集群和线程池的隔离。 API网关次要反对服务集群隔离,通过这种集群级别的隔离,在下层能够反对多租户,如果再彻底一点,在LB层面能够把网关集群也隔离进来。另外,服务的灰度公布也是通过网关这种集群隔离来实现的。具体过程是,在降级时,用户能够在界面上配置流量转发规定和集群,通过流量回放,将局部测试流量导入到灰度集群,或把线上实在流量按比例转发给灰度集群,确保没有问题后再全量公布。 线程的隔离次要体现在数据服务,次要性能是把数据API化,也就是在界面通过简略的配置就能够把MySQL、ES、Hbase的数据通过API提供进来,不必开发人员入手写CRUD或者客户端代码,十分不便。目前个推数据中台业务场景的大部分流量都是申请数据服务,因而咱们设计了一般线程池、慢线程池和自定义配置的线程池等三类线程池。当申请时长超过慢阈值后,接口会被调配到慢线程池解决,防止慢申请拖垮整个服务。 ✦ 4) 服务编排 服务编排也是API网关须要满足的一个常见需要,次要是将多个API做聚合调用,大幅升高调用提早。这部分性能之前是在网关上的,在网关层面反对的服务编排相对来说较为根底,可能撑持API的并发聚合调用,但难以解决简单的业务组合,特地是波及到事务的编排场景。因而,咱们决定将这部分性能,抽取进来做独立服务,而后续的链路网关会间接拜访服务编排模块,这样也保障了网关整体绝对轻量。 ✦ 5) 性能优化 针对API网关性能,咱们也做了一系列压测和优化,比方,应用开源函数代替或重写外部大量应用的序列化、加解密等函数;大量应用Sync.Pool复用对象,对其外部逻辑进行纯异步解决;自研gnet,替换原生net框架,对网络模型进行优化等。从线上理论运行后果来看,目前个推数据中台中的API平台每天调用量超过10亿次,单机QPS峰值在2W左右,整体性能损耗在10%+,性能体现超过预期。 ✦ 6) 易用性设计 通过上述插件机制、隔离伎俩和性能上的极致优化,咱们确保建设的API网关平台整体是高可用且易扩大的。而平台做好当前,还要不便用户接入应用和运维。 因而,为了晋升易用性,咱们采纳纯Web的界面设计,并内置了多个API模板。用户通过简略的配置,就能够创立一个API,例如接口受权有效期、QPS、限额等权限配置,都能通过可视化界面操作实现;创立好API之后,用户还能够间接在界面上调试。 ...

November 2, 2021 · 1 min · jiezi

关于api:Coinbase-开发的-Rosetta-API-是什么

Rosetta API 是一套用来对接区块链软件的 API 协定。由美国的 Coinbase 公司开发。当初曾经被很多区块链我的项目所反对。 简略来说,在这套协定呈现之前,各个区块链我的项目都应用着本人的 API 接口,天壤之别的接口实现的却是大同小异的性能,给这些软件的对接者带来了很多不必要的工作。 有了 Rosetta API 协定之后,每个我的项目都本人实现一套反对改协定的服务端,在客户端就不须要反复写对接代码了。 这套协定次要分为以下几个局部: Construction (结构)顾名思义,结构局部就是从无到有创立一些货色。例如,区块链中的“地址”,或者从更狭义的角度来说,“对链上资产进行加锁和解锁的机制”。 正如新员工在入职公司之后,须要录入指纹或者人脸等生物信息到公司的门禁系统中,以便下班时能进入公司。在发明地址的时候,咱们也须要输出一些只有咱们本人才晓得的信息,以便之后可能有权治理这个地址外面的资产。 这便是 /construction/derive 接口的作用。 Data (数据)区块链能够了解为一个全局的公共数据库,所以咱们须要一些 API 来获取和检索区块链上的数据。比如说,获取某个地址的余额。它就是 /account/balance 接口。 同时利用这个获取余额的接口,咱们还能够实现对地址合法性的校验。 再比方想获取某个区块高度的数据,用的就是 /block 接口。 小结Rosetta API 的呈现为区块链接入工作提供了很大的便当,但因为各个我的项目对于规定的了解不同,在理论实现上还是会呈现各种非凡状况,须要适配。

October 26, 2021 · 1 min · jiezi

关于api:HDC-2021华为正式发布-HarmonyOS-3-开发者预览版构建亿亿连接的新基石

北京工夫 2021 年 10 月22日,华为开发者大会 2021(HDC Together)在东莞松山湖举办,HarmonyOS 3 开发者预览版正式公布。 “HarmonyOS一直迭代、演进,成为构建亿亿连贯的技术基石,一直降级的开发套件助力开发者更高效的跨端开发。HarmonyOS 3开发者预览版让开发者能用更多更弱小的工具、在更多类型的终端设备上进行翻新,为消费者带来万物智联的新体验。”华为消费者业务软件部总裁龚体示意:“在不久的未来,咱们将带来为HarmonyOS全新研发的编程语言,为鸿蒙生态基础设施补上最初一环。” 每一届华为开发者大会都标记着 HarmonyOS 的重要里程碑。 2019年,HarmonyOS 1.0面世,革命性地提出了分布式技术,并验证了其可行性;2020年,华为面向开发者公布了HarmonyOS 2.0,不仅带来分布式能力的重大降级,也公布了面向智慧屏、智能穿戴、车机产品的开发者Beta版。HarmonyOS 2带来了控制中心、万能卡片等全新个性,以及更全面的性能晋升和更齐备的隐衷爱护,受到了大量消费者的欢送与青睐,降级速度屡破记录。迄今为止,搭载HarmonyOS的设施数量已超1.5亿,使其成为了史上倒退最快的终端操作系统。 往年的开发者大会,华为连续传统,推出了 HarmonyOS 的最新版本—— HarmonyOS 3开发者预览版,围绕弹性部署、超级终端、一次开发多端部署三个外围价值再翻新,零碎性能和开发工具全面降级。 作为新一代的智能终端操作系统,HarmonyOS的零碎架构能够实现弹性部署,让不同内存的智能设施都应用同一语言交换。HarmonyOS 3开发者预览版带来了全新的可视的弹性部署自动化工具,设施开发者能够依据不同硬件灵便抉择操作系统所需组件,让更多的设施可能更简略地搭载HarmonyOS。 分布式技术始终是 HarmonyOS的能力外围,可能让多个设施自由组合,在零碎层交融成一个超级终端。每个设施都能成为相互的功能模块,实现能力互助,资源共享。本次公布的 HarmonyOS 3开发者预览版带来翻新的异构组网技术,让分布式能力撑持更多设施、更佳性能,打造更坚硬的超级终端底座。比方,手机、智慧屏、4台音箱能够组合成6个设施的超级终端,让手机视频也能够享受超大屏幕和5.1声道影院级体验;手机、平板、PC组合带来升级版多屏协同,三屏合作晋升办公效率。 随着全新的 HarmonyOS 3 开发者预览版公布,HarmonyOS 利用与服务开发工具套件全家桶也全面降级,端到端帮忙开发者高效率、低成本地实现跨端利用与服务的开发。其中,Harmony 设计零碎(Harmony Design System)提供残缺面向多端设施的设计规范、原子化自适应布局能力插件、反对不同设施的服务卡片模板等设计工具,让不同设施达到统一的视觉体验的同时放弃整体设计语言的一致性;方舟开发框架3.0(ArkUI 3.0)带来全新申明式UI框架,应用TS/JS语言,缩小跨端利用前端开发设计代码量,效率、性能均大幅度晋升;方舟编译器3.0(ArkCompiler 3.0)实现跨设施对立编译,只需一次编译即可跨端运行;DevEco Studio 3.0带来高效率编码、跨端协同调测、多设施集成测试等工具降级,无效晋升跨端利用开发效率;HarmonyOS SDK凋谢6000+ TS/JS API能力,反对跨端分布式体验高效开发,一次开发、多端部署的能力帮忙新浪新闻、Wish 107.5等寰球多个头部利用疾速笼罩多设施。 同时,华为还发表,HarmonyOS 3 Beta 版预计将在 2022 年第一季度公布。届时,将为开发者提供更加残缺的零碎能力和开发工具,值得期待!

October 22, 2021 · 1 min · jiezi

关于api:Apizza快速生成Api文档

Apizza 不仅能够调试接口,而且能够疾速生成接口文档,不便提供给其余开发者应用 1. 编写文档在开发模式下,切换到文档,会主动填写参数和示例,您能够依照图示填写信息,即可生成文档。 文档的返回数据能够通过在模仿申请界面一键同步过去文档还有「参数绑定性能」「浮动正文性能」和「数据模型」一起应用能够最大化的复用文档,防止反复编写,十分不便2. 浏览文档进入我的项目后,左上角能够切换到「浏览模式」,能够浏览API文档 浏览API文档 3. 分享给开发者 点击分享或者浏览模式复制以后url给其余开发者就好了

September 26, 2021 · 1 min · jiezi

关于api:接口测试参数化apipost

环境变量什么是环境变量 ?当你有多个开发环境以及生产环境,你不必批改文档,一键切换到任意环境。 例:你能够配置线上或者线下环境的变量值。在URL中援用形式变量名。线上环境:host 对应 echo.apipost.cn申请URL:https://{{host}}/get.php 对应 https://echo.apipost.cn/get.php环境变量管理器进入环境治理 这里也能够进行切换环境。 点击新建环境 保留即创立胜利。 应用脚本定义环境变量除了通过环境变量管理器,咱们也能够通过脚本来定义环境变量。 例如咱们在预执行脚本中定义一个环境变量num,其值为1000 apt.variables.set("num", "1000"); // 设置一个全局变量定义后,就能够应用了 应用环境变量在申请参数的各个中央中您都能够通过 {{变量名}} 来进行援用: 你在Raw模式下也能够 切换环境,发送申请时,这些参数将会被环境变量值替换掉。 查看已定义的环境变量咱们能够通过点击右上角的小眼睛进行变量的查看、批改和删除

August 26, 2021 · 1 min · jiezi

关于api:一文讲述G6实现流程图绘制的常用方法

摘要:G6 是一个图可视化引擎。它提供了图的绘制、布局、剖析、交互、动画等图可视化的根底能力。本文分享自华为云社区《会用这些的api,轻松绘制流程图——antv.g6流程图入门》,作者:一枚搬砖工 。 罕用graph属性和办法graph属性containerheightwidthmodes graph = new G6.Graph({ container: "container", height: 500, width: 500, modes: { default: [ "drag-canvas", "hover-node", "select-node", "hover-edge", "keyboard", "customer-events" ], addEdge: ["add-edge"], moveNode: ["drag-item"] }, renderer: 'svg' plugins: [grid]});graph办法初始化数据data(data)const data = { nodes: [ { id: 'node1', label: 'node1', }, { id: 'node2', label: 'node2', }, ], edges: [ { source: 'node1', target: 'node2', }, ],};// graph 是 Graph 的实例graph.data(data);节点和边的增删改查add(type,model)新增元素(节点和边) 如果是自定义节点或者边type为自定义节点或者边的名称 addItem(type, model, stack)新增元素(节点和边) this.edge = this.graph.addItem('edge', { source: item, target: item, start: startPoint, end: startPoint, type: 'link-edge'});remove(node/edge)移除节点或边 ...

August 25, 2021 · 3 min · jiezi

关于api:Sentinel-GO-API-使用指南

工具与资源核心帮忙开发者更加高效的工作,提供围绕开发者全生命周期的工具与资源https://developer.aliyun.com/... API 使用指南用户接入应用 Sentinel Go (后文均用 Sentinel 示意 Sentinel Go) 次要须要须要以下几步: 对 Sentinel 的运行环境进行相干配置并初始化。API 接口应用细节能够参考:配置形式埋点(定义资源),该步骤次要是确定零碎中有哪些资源须要防护,资源定义可参考:老手指南配置规定,该步骤次要是为每个资源都配置具体的规定,规定的配置可参考:老手指南以及各个模块的应用文档。编写资源防护的入口和进口代码。开释形式可参考:老手指南 通用配置及初始化应用 Sentinel 须要在利用启动时对 Sentinel 运行环境进行相干配置并触发初始化。api 包下提供如下函数:• InitDefault():从环境变量指定的配置文件以及环境变量中读取相应配置来初始化 Sentinel,若环境变量不存在则应用默认值。• Init(configPath string):从给定的 YAML 文件中读取相应配置来初始化 Sentinel。• InitWithConfig(confEntity config.Entity): 用户硬编码配置对象config.Entity来初始化Sentinel。通用配置项加载策略和配置项请参考 配置形式应用文档示例代码: import (sentinel "github.com/alibaba/sentinel-golang/api")func initSentinel() {err := sentinel.Init(confPath)if err != nil {// 初始化 Sentinel 失败}}留神:必须胜利调用 Sentinel 的初始化函数当前再调用埋点 API。 埋点(定义资源)应用 Sentinel 的 Entry API 将业务逻辑封装起来,这一步称为“埋点”。每个埋点都有一个资源名称(resource),代表触发了这个资源的调用或拜访。埋点 API 位于 api 包中:• Entry(resource string, opts ...Option) (base.SentinelEntry, base.BlockError)其中 resource 代表埋点资源名,opts 代表埋点配置。这里须要留神的是,返回值参数列表的第一个和第二个参数是互斥的,也就是说,如果Entry执行pass,那么Sentinel会返回(base.SentinelEntry, nil);如果Entry执行blocked,那么Sentinel会返回(nil, base.BlockError)。目前反对以下埋点配置:• WithTrafficType(entryType base.TrafficType):标记该埋点资源的流量类型,其中 Inbound 代表入口流量,Outbound 代表进口流量。若不指定,默认为 Outbound。• WithResourceType(resourceType base.ResourceType):标记该埋点资源的分类。• WithAcquireCount(acquireCount uint32):标记每次触发该埋点计为几次调用(能够了解为 batch count)。若不指定,默认为 1。• WithArgs(args ...interface{}):埋点携带的参数列表,为热点参数统计预留。• WithSlotChain(chain *base.SlotChain):埋点执行的查看的slotchain,若不指定,默认应用全局slotchain埋点 API 示例: ...

August 18, 2021 · 1 min · jiezi

关于api:快递100下单未知错误快递100寄件同城配送接口FAQ

寄件类账号注册后商家寄件接口显示下单失败,是否能够调试?1.商家寄件接口无接口费用,充值费用为运费,在无充值状况下无奈调用接口,最低充值为100元; 2.商家寄件接口下单后为预扣费用,勾销订单会返回预扣费用 集体寄件接口中运力查问接口返回的“type":1和"type":2指的是什么?运力查问后有两个类型,1代表官网,2代表优选,其中官网运力为快递公司官网与快递100单干,运力笼罩与快递公司服务能力无关,根本视为该品牌全国凋谢,优选运力为快递员与快递100单干,为具体区域合作,详见产品介绍中的快递类型表格。 集体寄件接口下单是不分地址,各家快递100单干的快递公司都能够选址吗?不是,可能受以下状况影响不笼罩且下单失败:1.快递公司的服务范畴无限,比方边远地区仅有邮政反对,下单后会揭示“无运力笼罩,下单失败”; 2.快递100集体寄件接口分为3个内容:运力查问-快递寄件-勾销订单,其中快递寄件前需查问运力,不反对的运力无需发动该快递公司下单。 商家寄件接口与电子面单接口的区别1、电子面单接口,须要有单干的快递公司面单账号,运费和快递公司结算,对接接口疾速回传单号进行打单。适宜发货量大且发货地点绝对固定的场景,适宜仓库、电商平台、公司发货。 2、商家寄件接口,不须要有单干的快递公司面单账号,运费通过预充值的模式和快递100结算,适宜发货量小且发货地点绝对扩散的场景,适宜门店、微商类型发货。 同城接口顺丰同城对接中,店铺ID怎么获取?请分割顺丰同城业务人员,阐明应用快递100API对接,业务人员会提供此参数。 快递100反对的同城品牌有独自的查问接口吗?仅反对通过快递100平台下单后能够查问其物流轨迹,其余平台订单不可查问物流信息。 同城配送接口的接口费用蕴含什么?同城配送接口下单服务及物流查问服务,下单后即可查问物流信息。

August 16, 2021 · 1 min · jiezi

关于api:快递100查询接口调用物流信息错误FAQ

地图轨迹类app、小程序、web如何嵌入地图?app:webview嵌入地图 小程序:<web-view>嵌入地图,从配置后盾下载校验文件供快递100校验后即可,校验域名为:api.kuaidi100.com web:iframe嵌入地图 小程序嵌入地图如何不让它满屏显示?可先在贵司的小程序中嵌入贵司的H5,再在H5中再嵌入快递100地图,此时就能够通过iframe管制地图的宽高。 小程序嵌入地图时如何加上自定义的文字信息?可先在贵司的小程序中嵌入贵司的H5,再在H5中再嵌入快递100地图,此时就能够在贵司的H5上加上自定义模块。 地图轨迹返回的URL多长时间内无效?1.在包裹未签收前:3天 2.在包裹签收后:15天(备注:url有效期从查问工夫开始计算) 地图轨迹返回的URL会不会自动更新?遵循查问接口自身产品特点,应用实时查问类须要被动发动申请并返回最新信息,应用订阅推送类会推送音讯并更新URL。 地图下面的以后点跟以后轨迹数据有差距?以后点未被快递100辨认到,所以有些单会存在偏差,为失常状况。 地图是否反对返回经纬度接口?暂不反对,可分割快递100工作人员记录需要。

August 13, 2021 · 1 min · jiezi

关于api:全国快递API接口文档接入技术问题FAQ接口源码复用

快递100API接口常见问题解答。此内容为技术对接FAQ,为您解决对接快递100API接口过程中遇到的问题。如果本篇内容没有笼罩到您的问题,请拜访官方网站分割技术人员和经营人员帮您1对1解决。 问题1.快递100api接口里sign该如何解决?快递100加密形式对立为MD5后转大写,能够参考签名 org.apache.commons.codec.digest.DigestUtils.md5Hex(msg).toUpperCase();问题2.应用了快递100订阅接口后,该如何解决回调接口?能够参考推送订阅回调 public SubscribeResp callBackUrl(HttpServletRequest request){ String param = request.getParameter("param"); String sign = request.getParameter("sign"); //倡议记录一下这个回调的内容,不便出问题后单方排查问题 log.debug("快递100订阅推送回调后果|{}|{}",param,sign); //订阅时传的salt,没有能够疏忽 String salt = ""; String ourSign = SignUtils.sign(param + salt); SubscribeResp subscribeResp = new SubscribeResp(); subscribeResp.setResult(Boolean.TRUE); subscribeResp.setReturnCode("200"); subscribeResp.setMessage("胜利"); //加密如果相等,属于快递100推送;否则能够疏忽掉以后申请 if (ourSign.equals(sign)){ //TODO 业务解决 return subscribeResp; } return null; }问题3.应用电子面单图片接口,该如何解决返回的base64图片?返回的是一个字符串json数组,多个子单时会有多个。 增加前缀“data:image/png;base64,”,把“\n”替换成“”;能够参考解决返回的base64字符串 public List<String> getBase64Img(String imgBase64){ List<String> stringList= new Gson().fromJson(imgBase64, new TypeToken<List<String>>() {}.getType()); List<String> base64Img = new ArrayList<String>(); if (stringList != null && stringList.size()>0){ for (String s : stringList) { s = "data:image/png;base64,"+s.replace("\\\\n",""); base64Img.add(s); } } return base64Img; }问题4.云平台其余接口该如何对接?第一步:依据对应接口新增对应的申请参数类,继承CloudBaseReq,相似快递寄件接口勾销寄件申请参数类 ...

August 11, 2021 · 1 min · jiezi

关于api:物流快递查询API能给电商卖家带来什么好处

物流快递查问API通过容许程序员将运送性能间接集成到您的业务零碎或电子商务网站中,为公司业务管理减少了更多的灵活性。您能够针对特定的业务需要和运输公司自定义运输应用程序编程接口(API),以进步订单履行能力。 每个企业都有不同的挑战去克服,以靠近完满的用户体验和实现用户增长。理解基于快递运输增长策略中的影响变量以及物流查问API能够为您的业务提供什么益处,这些功课都能够使您更靠近维持增长的指标。 API是如何运作的?“API”代表应用程序编程接口。API容许两个不同的应用程序之间互相传递信息,并在单个界面中向用户显示两个应用程序的信息。一般而言,API能够帮忙开发人员能够更轻松地在其应用程序中应用其余公司提供的技术。这是通过简化编程并仅向开发人员提供所需的操作来实现的。 第三方物流快递查问API服务商能同时与多家区域或国内物流公司集成(USPS,FedEx,DHL,顺丰等),以提供多物流订单查问性能和寄件反对。电商卖家无需与单个物流服务商集成,通过第三方物流快递查问API服务商,商家只需集成一次即可拜访整个物流供应商网络系统。 在大多数状况下,电子商务企业应用物流查问API将订单发送给其终端客户,同时满足多个客户的物流要求,所以说,物流快递查问API是将企业与物流公司还有终端客户分割起来的重要桥梁。 物流快递查问API是如何影响电商业务?依据Baymard Institute的一项钻研,在网上购物时,消费者放弃领取的次要起因是被要求领取额定的费用(运费,税金)。随着越来越多的商家都提供收费送货服务,消费者怎么可能会违心领取额定的费用并期待更长的工夫能力收到他们订单? 然而,如果商店提供折扣或收费送货服务,即便这意味着要再等上几天或买更多的商品能力符合条件,客户也会违心买单。为此,一些物流快递查问API(例如:快递100API)将帮助商家通过群组协商的形式与快递公司进行价格会谈,从而来显着升高电商商家的运输成本。这使电商企业可能提供最合适本人客户的运输解决方案,并确保商品可能疾速送到生产的手上。 从顾客下订单的那霎时开始,始终到将包裹交付到客户手上,这个过程中会呈现很多的问题以及简单的状况,然而牢靠的物流快递查问API第三方可能帮忙商家将这些问题产生概率降至最低。 物流快递查问API提供什么益处?1.进步经营效率优良的物流快递查问API能为商家提供一个简略而全面的管制界面,同时将烦扰工作的因素缩小到起码,商家因而能够专一于外围业务工作。 2.提供安全可靠的运输服务通过应用物流查问API,线上业务能够将物流模块直接插入业务模型中,还能使领取流程齐全自动化。这不仅能够节俭业务人员的工作工夫,还能够为客户提供更好的购物体验。 3.治理实时运输资源“最初一公里物流”的配送问题及解决办法 在一个曾经被京东和淘宝教育过的电商市场,物流运输规范只会越来越高,想要跟上大公司的步调,其中的要害是要可能与各种运输公司单干,为客户提供最佳的运输抉择(更便宜,更快,更平安等等)。物流快递查问API集成包含来自许多不同物流快递公司的实时报价,使购物者能够抉择最适宜他们的运送办法。 4.寰球地址验证无论订单量是大还是小,配送失败和地址变更附加费都可能会影响客户对商家的认识,此外这种状况也会削减商家支出。地址验证服务能确保包裹首次就能达到正确的目的地,从而升高差评危险以及亏损危险。 5.实时查问物流信息可能跨各种物流公司跟踪包裹并创立跟踪事件,帮忙客户查问物流状况的最新状态的工具,是一种十分有实用价值的工具。它能够使客户能够更好地理解预期的交付工夫以及在运输和交付过程中可能产生的任何意外问题。最重要的益处是,它可能让更多的客户自助查问,而不须要通过客户就能晓得信息,从而进步商家店铺业务人员的效率。 论断建设一个主动零碎来解决订单和安顿物流运输对店家来说是十分有必要的,因为将非核心业务交给程序或机器,才会有更多的工夫和精力专一于倒退本人的外围业务。借助运物流查问API,商家将能确保哪种运输和交付形式是最能让客户称心的。 新手电商产品开发指南:上线一款产品之前要答复的5个问题

August 10, 2021 · 1 min · jiezi

关于api:电商服务API给商家带来12种好处

随着诸如物联网(IoT),人工智能(AI),加强事实/虚拟现实(AR / VR)以及区块链等技术的衰亡,电商行业也因而受害良多。在与电商相干的数十种技术中,有一种能够将所有行业倒退劣势会集到电商业务上的技术。那就是通过API服务相互连接各种技术来改善电商应用程序和网站。 电商API帮忙开发人员将信息从一款软件转移到另一款,而后在单个用户界面中应用这些数据或性能。目前来说,API是与各种解决方案集成的可扩大平台,因而电商公司能够利用其电商平台或其余供应商提供的现有性能,而无需从头开始构建一个新的平台或开发一个新性能。 如果你还不相熟什么是API,这篇文章能够帮到你API的基础知识。 API集成对电子商务平台的益处API能够将多个平台的数据和性能互相集成。 例如,您能够将您的电商网站/平台与物流运输服务供应商的账户集成,并导入订单和运输数据。 这样,你就只需在一个平台上进行快递运输操作。 电商订单仓储治理API能够通过集成API进行诸如订单履行、快递治理、标签治理、发票治理、订单打印、货运信息、物流跟踪和签收告诉等等的性能来帮忙企业实现订单治理、发货治理和运输治理的自动化,简化其物流仓储经营,从而实现老本升高。 因而,如果你想要玩转电商经营和实现效率性老本管制,则须要用一个API把仓储软件和物流运输软件的性能集成起来。以下是API可能给电商用户带来的5种益处: 1. 可扩展性 API能够用来连贯不同的软件,并通过接管申请和发送响应使它们彼此实现数据交互。它扩大了应用程序或网站的性能,可帮忙您更快地实现一些重复性的复制粘贴工作。重要的是,它还简化了信息共享。 2. 加强安全性 API容许你的用户从你的零碎申请数据来加强软件系统的安全性。该API通过诸如加密之类的安全措施来爱护您的电子商务数据。 3. 可重用性 API是基于自定义和自助服务而构建的,因而API用户能够在多个平台和应用程序之间重复使用和交互数据。可重复使用和交互数据的的个性帮忙开发人员缩小许多重复性工作和把工夫和精力花在真正有价值的我的项目上,从而进步了开发人员的生产力。 4. 高可扩展性 API能够连贯到任何新零碎,而无需在原始零碎,程序或硬件上进行任何更改。只需几行代码即可与任何新零碎连贯,并提供可伸缩性以解决更简单的事务。 5. 高同步 因为API能够实现多平台性能集成,你能够依据你特定业务需要创立批改你的上线商店,例如从其余应用程序和软件中抉择适宜你的落地页、文案、推广渠道等等。 通过集成系统,一家公司能够连贯到其余公司的软件和应用程序,以治理最能满足其需要的数据,运输渠道,产品和服务。 API提高波及到咱们所有人。当初,让咱们理解三种常见的API模型类型,它们能够从零碎中获取数据,将数据转化为流程或发明一种体验。 3种常见的API模型类型应用API为主导的集成软件时,能够改善用户与新设施和技术更替的交互方式。你能够通过多渠道销售,库存治理,运输或跨渠道创立个性化体验来改善电商订单解决流程。以下是三种常见的构建类型: 1. 体验式API(Experience APIs) 这种类型的API个别用于数据重配置,以便能够依据用户的须要以多种格局显示雷同的数据。体验式API为每个渠道创立一个通用的数据源,而不是为每个渠道设置独自的集成系统。 2. 流程式API(process APIs) 这种API个别用于构建一个IT生态系统。流程式API有助于创立独立的数据源点,从而防止在单个零碎内或跨零碎造成数据孤岛。流程式API不依赖其余须要传送数据的零碎。这意味着流程式API可帮忙须要扩大其以后IT基础架构的企业。 2. 零碎式API(System APIs) 零碎式API暗藏了诸如FTP服务器,ERP,CRM或旧零碎之类的外围零碎的简单设计和解决办法。这类型的API通常提供一种形式来拜访零碎数据和记录业务中存在的集成办法。 在理解完这些API类型后,我将列举一些适宜电商平台或商家应用的API,这些API能够加强平台或自营点的实用功能和改善用户体验。 不同类型的电子商务APIAPI能够帮忙开发人员将其电商平台或其余供应商提供的各种性能间接集成到自家电商商店中。这有助于简化订单解决、快递运输和包裹交付流程。 市场上存在着数百种电商反对类的API服务。 其中一些可用于增加订单解决,物流运输,快递跟踪,获取产品信息,查看商品状态,转买或二次发售,甚至创立一些用户细分群组以及许多其余有利于做精细化经营工作的性能。 在这里,我将重点介绍一些市面上最受欢迎和最有用的API电商反对性能。如果你想理解电商快递配送中的5个常见问题和解决方案,这篇文章适宜你浏览。 1. 产品信息API应用产品信息API,你能够从产品数据库中提取产品详细信息,其中包含无关产品描述,产品ID,产品题目,产品规格,产品图片,价格,产品数量等的信息。 2. 订单信息API订单信息API蕴含无关从你的渠道创立的订单的详细信息。此类API能够实现订单同步导入和导出,并显示你账户中所有已创立和可用订单的列表。 你能够依据包装和发货日期对订单数据进行分类和过滤。此外,还能够勾销订单,退货订单,创立批量导入订单以及为已订购产品增加库存。依据须要增加其余参数也能够实现。 3. 库存信息API你能够应用此API来排序和过滤库存数据,并查看产品SKU的库存详细信息。应用此API,你还能够更新指定产品的产品库存详细信息。 4. 物流运送API通过此API,你能够将整个快递运输自动化。零碎能够间接与物流提供商分割,并且能够跟踪从订单出单到交付给客户的包装中的所有详细信息。它还能够使包装发票和标签的创立过程自动化。 运送API可让您依据运送工夫,费用和地位从多个运送者中进行抉择。应用这种类型的API,也能够进行发货跟踪。它使您可能将订单跟踪信息集成到挪动应用程序或网站中,或者通过电子邮件或短信集成。 5. 快递信息API应用此API能够查问特定地区可用的快递公司和抉择合乎你预设价格或时效参数的公司,而后主动为抉择的公司创立发货申请和制作提货订单。 6. 包装治理API你能够在这种一体化的API来创立订单、发货、并为同时订单生成标签和发票等等。应用此API,你能够一次性实现多项发货工作。 7. 渠道信息API渠道API为你提供所有集成渠道的详细信息(例如天猫,京东,拼多多,微信商城等等)。该API在创立订单时会调配一个惟一的渠道ID,该ID可用于为你的账户抉择或指定一个自定义渠道。该API还显示了已集成到商店账户中的所有渠道的列表信息。 8. 目录信息API应用此API,你能够在几分钟内创立,编辑和治理您的产品目录。它还反对与业务的其余要害系统集成,例如订单执行,库存治理以及数据分析报告。 9. 身份验证/登录API身份验证或登录API是你拜访物流服务商站点资源所需的拜访受权。此类API可帮忙物流加盟站点确认你的身份和给你返回你所须要的信息。 10. 领取API应用付款API,你能够为本人创立一个专属的领取结款页面,该页面能够接通信用卡、借记卡、支付宝、微信、Paypal、Visa等等的付款形式。此外,你还能够依据你现有的付款条款对领取API进行批改。 ...

August 10, 2021 · 1 min · jiezi

关于api:API技术应用场景普及物流API在电商中的2个重要用途

引言只有是业务波及到物流运输的企业就必须定期与泛滥的国内和国内物流公司单干。当然。终端客户永远也不会思考企业方在治理物流运输工作时遇到的艰难,比如说要确保往年拿到的100个订单的送货地址都是100%正确。 值得庆幸的是,治理物流不再是齐全手动的工作了,当初有许多工具能够使各种规模的企业的更加灵便轻松地解决物流问题,比如说电子面单打印工具和扫码枪等等。尽管这些硬件工具提供了很多的帮忙,然而其余软件工具(例如电脑程序,AI和API)从员工的日常行为中整合了数据,帮忙人们防止了更多人为谬误,同时使流程更加高效。 这些硬件和软件工具在当初看来并不是什么陈腐事物,但这并不意味着它们在2021年变得不重要了。比以往任何时候,都有更多的人在网上购物,因而比以往任何时候,企业都更须要诸如API之类的性能整合工具,将更多的性能整合起来提高效率,毕竟高效率等于低成本。对于电子商务企业来说,通过一种工具实现所有要害业务的需要是不事实的。因而,电商企业须要通过利用各种API来整合各种所需性能。以下是以物流查问API为切入点,为各位电商从业人员,提供一些物流老本优化思路,心愿这些内容能够在2021年为您的电子商务业务带来的一些益处。 什么是物流查问API对于IT业余人员,而不是中小型企业的物流部门而言,物流查问API(应用程序编程接口是插件)听起来像是一个技术性很强的一种工具,然而实际上API的应用形式会比的字面意思要更简略。简略来说,API(应用程序编程接口是插件),是一种指令、应用程序或桥接器,它们使不同的程序的性能会集到一个独自程序中应用。大多数大型科技公司不仅会提供本人产品的API服务,还会应用其余公司的API服务。在咱们终端理论应用的过程中,许多API齐全是看不见的,因为它们被设计为在后端而不是在面向客户的前端上工作,例如平安API是个别人从未见过或想过的货色,然而这个程序始终在致力确保您浏览的站点不会记录你的隐衷信息或者调用你的个人信息。 物流查问API最常见的用处没有繁多的物流查问API,也没有繁多用处的物流查问API,因为一些最佳的开发来自试验。然而,对于刚开始应用API的企业来说,有一些主要用途是最好的终点。你不用成为程序员也能够应用这些物流查问API,因为许多API都靠近即插即用的简略级别。 1. 地址验证物流查问API最根本的用处之一是地址验证。当客户在结账输出地址时,他们可能会输错信息,即便输出正确的地址,格局也会使物流软件和物流快递公司的分拣人员感到困惑。应用地址验证API,零碎将间接揭示客户输出的地址可能存在配送问题,以便他们能够纠正错误信息或地址格局。如果客户输出的地址无效,地址验证API还能够为物流公司提供更好的地址格局记录形式。 2. 追踪物流运输节点信息和包裹交付告诉客户下订单后,客户必定想晓得他们的物品会在何时送达。物流查问API不仅能够发送交易确认短信,还能够让电商卖家发送物流运输节点信息和包裹交付告诉,以便客户随时取得最新的订单状态。为客户提供更多信息和自主操作服务绝不是一个坏主意,所以让你的ERP或者电商平台系统集成物流查问API来为你实现反复枯燥的查物流信息和回复客户工作。在页面上设置好简略的参数以及你的广告文案之后,物流查问API能够收集跟踪物流和包裹交付信息,以供你和你的客户共享,客户每查看这个物流信息页面一次,你的品牌就能取得一次曝光。利用你曾经领有信息和技术力量,让你的工作更轻松,并让你的客户更愉悦。

August 9, 2021 · 1 min · jiezi

关于api:API集成7款国内外管理快递物流的物流查询API工具

什么是物流查问API?物流查问API接口是物流查问第三方公司提供给企业及最终用户实时查问物流轨迹的性能。用户通过查问API接口提交快递单号后,查问API接口会调取快递公司的单号信息并返回此单号最新的物流信息,包含物流轨迹、配送状态、更新工夫等。 物流查问API还能够用于获取以后运输费率的无关信息,验证地址(外国和寰球)并保留已发送和已交付包裹的记录等等。 以下是寰球最受欢迎的API服务商名单 1.快递100 API快递100物流查问接口现已反对1100+物流公司接口一次性对接,提供快递单号物流轨迹查问接口服务,包含京东、邮政、顺丰、圆通、中通、申通、韵达、EMS、百世、天天等快递物流轨迹查问。快递100API每日数据传输量近25G,数据存储量近65G,吞吐量近40万条/秒。 快递100API能够帮忙用户: 定时跟踪监控商品物流,被动推送信息,反对1200+家快递物流。查问快递地图轨迹和预估快递时效,通过快递单号及收寄件地址,进行时效预估,并展现包裹运输过程中的轨迹。反对快递公司及菜鸟、淘宝电子面单获取、打印以及生成html。通过接口能够满足用户自定义配置发货单模板,实现发货单打印一体化服务。反对打印机共享、近程打印、自定义打印模板、图片及附件等。通过接口能够满足用户自定义配置发货单模板,实现发货单打印一体化服务。物流节点短信发送,让用户及时把握快递更新;自定义营销短信,广告推广,产品宣传。智能判断单号所归属的快递公司;录入单号辨认快递公司,晋升商家录单体验。查问某线路快递的费用,可估算不同快递的老本,提高效率,升高经营老本。查问快递时效,预测快递下单后的达到工夫。快递时效查问(含明细),预测下单后达到工夫,并返回相干明细。快递获取快递网点地位、电话信息,判断某快递是否能够到达某地,并用于布局参考。可按省、市、快递公司查问某地快递服务是否可用;也能够间接查问某线路的可用性。2. Shippo APIShippo API能够帮忙用户: 轻松创立发货单更新运费信息打印电子面单随时随地追踪货物状态自营电商品牌和电商平台卖家能够将此API集成到 的电商平台或者电商SaaS服务工具中,这能更无效地帮忙经营人员治理快递运输。开发人员能够将此API与简直所有规范编程语言一起应用。 Shippo API端点列表地址-此端点容许您创立一个新地址,该地址将用于创立货件包裹–该端点创立了要运输的新包裹费率–此端点返回指定货件的运费托运–托运形成此API的根底,托运端点可用于显示与特定购买相干的托运标签和费率Shippo API定价详细信息随用随付-每笔货运$ 0.05 +邮费专业版–每月$ 10美元高级版 –此打算依据客户的运输需要提供不同的自定义设置3. Kite.ly APIKite.ly API是一款收费的API接口,开发人员能够将其集成到他们的电商平台和ERP软件中。容许用户制作自定义产品包装并预约物流公司将所售商品运送到世界的任何一个中央。通过Kite API,开发者能够拜访Kite寰球打印网络。应用这个性能,用户能够轻松地打印其货物单。 Kite.ly API端点列表getCustomerDetails –此端点返回由客户ID指定的客户的详细信息GetOrderStatus –此端点返回单个指定订单的状态ListCustomers –此端点返回所有可用客户的列表ListOrders –此端点返回所有订单的列表ListShippingMethods –该端点返回所有可用的运送办法4. snapCX提供的APIsnapCX是一家为零售商提供多个API接口的物流查问API服务商。 snapCX开发了以下API,以帮忙零售商、电商卖家、B端企业治理他们的快递运输经营。 SnapCX地址验证APIsnapCX提供的SnapCX地址验证API能够使用户的应用程序能够在世界各地随时随地验证收货地址的真实情况。 SnapCX端点的地址验证列表ValidateGlobalAddress –此端点容许用户验证寰球地址。ValidateUSAddress –此端点仅容许用户验证美国地址。SnapCX地址验证定价详细信息高级版-每月9美元(无全局地址验证)寰球版–每月$ 39.00企业版–每月$ 99.00SnapCX发货跟踪APIsnapCX的SnapCX发货物流跟踪API能够做到这点。无论客户应用的哪种物流跨地公司,它都能够使客户随时随地获取无关订单的物流跟踪状态实时信息。 SnapCX Shipping Tracking 定价详细信息高级版–每月5美元高级版–每月$ 19.005. EasyPost APIEasyPost API是一种可能帮忙开发人员可能集成所有物流运输信息到指定软件的高效物流查问接口。 该API提供的服务如下: 物流追踪货运标签创立保险购买地址验证服务评分国内运输服务所有的性能都封装在一个独自的API(EasyPost API)下。 EasyPost API端点列表地址-此端点创立送货地址。地址显示了物品的发运地和目的地包裹-创立新的包裹,分明地定义包裹的属性,例如大小和分量验证地址–该端点验证运送地址地址验证API美国地址验证-500次查问,每月只需$ 15 1000次查问,每月$ 255000查问,每月只需$ 50国内地址验证– 500个查问,每月$ 30 1000次查问,每月$ 605000查问,每月只需$ 300EasyPost API 物流查问API此Easy Post Tracking API端点使开发人员能够将邮政包裹跟踪集成到理论应用的应用程序中。能够通过电子邮件和SMS发送无关跟踪状态的告诉。 Easy Post Tracking API端点列表TrackPackage –此端点创立一个新的跟踪器,并返回指定包的跟踪状态详细信息GetTrackers –该端点返回特定API密钥跟踪的所有软件包RapidAPI.com上的USPS运送API轻松公布跟踪API的价格详细信息价格详情:随用随付-每个包裹1美分 ...

August 9, 2021 · 1 min · jiezi

关于api:评估物流查询寄件API服务商时应考虑的5点技术因素

最好的物流快递API能够满足寄件、查件、收件、数据记录和剖析等要求,能够无缝集成到你现有的仓储、电商、ERP、数据分析等等的软件中,同时还提供易于浏览和更新的文档。 什么是最适宜你业务的物流快递API?只有你和你的团队能够答复这个问题,然而任何公司在评估快递物流查问寄件API服务商选项时都应思考以下5点: 性能特点:最好的物流快递API提供了牢靠的,可定制的物流解决方案。物流公司数量:集成的物流公司越多越好。性能可扩展性:你的业务会随着工夫的增长而增长。要抉择能够继续满足你需要的物流快递API。技术支持:物流快递API的技术或客服反对能解决FAQ和技术文档中以外的问题。技术能力:最好的物流快递API有最好的开发人员资源,确保提供稳固疾速的服务。例如,无关性能的局部包含标签创立的深刻概述以及运输API能够生成标签而后使其可用的不同形式。一些公司可能须要生成标签并在当前下载它们,而其余公司可能须要生成标签并立刻下载它们。这是送货API的“可自定义”局部发挥作用的中央-最适宜您企业的送货API是一种API,它使您可能以适宜您现有工作流程和流程的形式生成和下载标签。 物流快递API清单运送性能相干我能够将运送性能集成到我的应用程序,网站或订单管理系统中吗?我能够同时创立出站标签和退货标签吗?我能够发送实时跟踪信息给用户吗?此API是否能够进行地址验证,更正和标准化收件人的地址?物流快递公司相干我能够用物流快递API提供的账户连贯上所有的物流快递供应商吗?所有你提供的区域运营商都能够促成我的业务倒退吗?该API是否反对收尾清单和出货表格创立等性能?此API是否与任何物流快递运营商都有特惠议定价格?性能可扩展性相干什么是API?如何编写和浏览API文档 免费形式和构造是怎么的?如果有多个定价和性能选项,哪种组合才是最适宜我的业务需要?进行单个API调用的毫秒级速度是多少?API的速率限度是多少?每分钟/小时能够调用多少数据量?如果我的调用量减少了,能够进步速率限度吗?技术支持相干物流快递API服务商提供沙盒测试账户吗?如果提供,是收费提供吗?有多少个客服/技术支持渠道?官网、电子邮件,电话、微信反对等开发人员指南和其余文档的性能是否简单明了和每次更新前是否会有告诉?是否放慢集成过程的SDK(软件开发套件)?

August 9, 2021 · 1 min · jiezi

关于api:api设计原则

overview为了标准模块对外提供正当的api,现整顿如下准则: 若干准则作者承责准则作者对api负责。承当好用、不好用带来的后果。负责迭代更新。 作者优先准则作者开发的api应该先满足作者的需要。 不听从用户优先准则不以用户为核心开发api。用户能应用的api都是作者已开发的api。作者决定开发哪些api。用户决定应用哪些api。用户有使用权。用户能够抉择应用或不应用。能够提倡议。不可决定api。此准则是“作者优先准则”的另一种表白。 实用准则每个api必须能够实现肯定性能。 繁多准则每个api只实现一个性能。 合乎自然规律准则这条很重要,然而我不晓得如何形容。 防止适度重载准则每个api能够有肯定重载能力。然而不应该适度重载。此准则相似“繁多准则”。 肯定容错准则当api收到一些不影响运行的数据或通过解决后能够运行的数据时应该失常返回后果。 严格数据优先准则当有更严格的数据时应该优先应用此数据。如:严格的数据类型、限定应用范畴的数据。 灵便优先准则在某同一个实现后果上有多个api管制时,应该应用灵活性更大的数据去实现。 独立优先准则各api间应该缩小重叠管制。尽量做到每个api管制一个性能。减小多个api管制一个性能的状况。 语义准则命名api时应该做到见文知意。

July 29, 2021 · 1 min · jiezi

关于api:如何使用-API-的方式给-SAP-service-cloud-Registered-product-上传图片

拜访网址:https://api.sap.com/ 因为是 SAP service cloud,故产品抉择 customer experience: 抉择 API 标签,OData V2,关键字输出 Registered: 找到一条记录: 下图高亮区域就是咱们要找到 API: 咱们须要把图片的二进制内容,转成 base64 encoding 格局,再传给这个 API: 更多Jerry的原创文章,尽在:"汪子熙":

July 11, 2021 · 1 min · jiezi

关于api:如何使用-SAP-API-Portal-Policy-Editor-给-SAP-API-调用自动添加认证信息

关上 API portal,找到要编辑的 API,点击关上,进入明细页面: 点击 Policies: 在策略编辑器的右侧,您能够看到开箱即用的策略,可帮忙您为您的用例抉择策略。所有安全策略都分组在平安下,相似的流量管理策略、中介策略和扩大策略也相应地分组。 策略编辑器的左侧有 Flows,PreFlow 和 PostFlow 位于代理端点和指标端点下。 右边选中 PreFlow,左边抉择 Mediation Policies -> Assign Message, 在 Create Policy 面板里,Stream 抉择成 Incoming Request: 增加好的 Policy 在 Policy 里显示如下图所示: 进入 source code 源代码编辑器: 复制如下内容: <AssignMessage async="false" continueOnError="false" enabled="true" xmlns='http://www.sap.com/apimgmt'><Add><Headers> <Header name="apikey">e9ZLBOfIplCOnibykWXsAfkMUexchhHN</Header> <Header name="Accept-Encoding">gzip,deflate</Header> </Headers></Add><IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables><AssignTo createNew="false" type="request"></AssignTo></AssignMessage>您必须用之前复制的 API 密钥替换标记的文本。 此代码将使 SAP API 治理将所需的 API 密钥值增加到发送到 API 核心的每个申请,并承受用于为消费者无效传输数据的压缩格局。 同理,给 A_SalesOrder flow,增加一个 Mediation Policies 上面的 Assign Message: <!-- This policy can be used to create or modify the standard HTTP request and response messages --><AssignMessage async="false" continueOnError="false" enabled="true" xmlns='http://www.sap.com/apimgmt'> <!-- Sets a new value to the existing parameter --> <Add><QueryParams> <QueryParam name="$top">3</QueryParam></QueryParams></Add> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignTo createNew="false" type="request"></AssignTo> </AssignMessage>这将限度 S/4HANA 返回的字段数。 ...

July 5, 2021 · 1 min · jiezi

关于api:Flink-113面向流批一体的运行时与-DataStream-API-优化

简介: 在 1.13 中,针对流批一体的指标,Flink 优化了大规模作业调度以及批执行模式下网络 Shuffle 的性能,以及在 DataStream API 方面欠缺无限流作业的退出语义。本文由社区志愿者苗文婷整顿,内容起源自阿里巴巴技术专家高赟(云骞) 在 5 月 22 日北京站 Flink Meetup 分享的《面向流批一体的 Flink 运行时与 DataStream API 优化》。文章次要分为 4 个局部: 回顾 Flink 流批一体的设计介绍针对运行时的优化点介绍针对 DataStream API 的优化点总结以及后续的一些布局。 1. 流批一体的 Flink1.1 架构介绍首先看下 Flink 流批一体的整体逻辑。Flink 在晚期的时候,尽管是一个能够同时反对流解决和批处理的框架,然而它的流解决和批处理的实现,不论是在 API 层,还是在底下的 Shuffle、调度、算子层,都是独自的两套。这两套实现是齐全独立的,没有特地严密的关联。 在流批一体这一指标的疏导下,Flink 当初曾经对底层的算子、调度、Shuffle 进行了对立的形象,以对立的形式向上反对 DataStream API 和 Table API 两套接口。DataStream API 是一种比拟偏物理层的接口,Table API 是一种 Declearetive 的接口,这两套接口对流和批来说都是对立的。 1.2 长处 代码复用基于 DataStream API 和 Table API,用户能够写同一套代码来同时解决历史的数据和实时的数据,例如数据回流的场景。 易于开发对立的 Connector 和算子实现,缩小开发和保护的老本。 ...

July 1, 2021 · 3 min · jiezi

关于api:API安全测试规范

1 生效的对象级受权1.1 概述生效的对象级别受权指未对通过身份验证的用户施行失当的访问控制。攻击者能够利用这些缺点拜访未经受权的性能或数据(间接的对象援用或限度的URL)。例如:拜访其余用户的帐户、查看敏感文件、批改其余用户的数据、更改拜访权限等。 1.2 测试用例在发送的申请中扭转对象的ID /shops/{shopName}/revenue_data.json通过遍历URL中的{shopName},攻击者获取到不同商户的销售数据。通过监控可穿戴设施的网络流量,其HTTP PATCH申请中的自定义申请头中存在字段: X-User-Id: 54796。通过替换X-User-Id字段的值为54795,攻击者接管到胜利的HTTP响应,并能够批改其余用户的账户数据。2 生效的用户身份认证2.1 概述用户身份认证过程中呈现的平安问题,如弱口令、明文存储、弱加密、明码爆破、GET形式传输令牌和明码、认证绕过等。 2.2 测试用例未校验令牌的有效性。更新明码接口未限度申请频率,旧明码参数可暴力破解。短信验证码或者邮箱验证码有效期超出10分钟或者长度小于6位。3 适度的数据裸露3.1 概述API接口被调用时返回了大量数据,很多数据可能都是不必要的,应将用户看到的内容范畴限度为必须内容。 3.2 测试用例某接口查问欠费金额,是否返回余额、账单等其余信息。4 资源不足和频率限度4.1 概述API接口未对客户端/用户能够申请的资源大小或数量施加任何限度。这不仅会影响API服务器的性能,从而导致拒绝服务(DoS),而且还为诸如暴力破解之类的身份验证破绽敞开了大门。 4.2 测试用例当利用蕴含一个每页能够显示200个用户的列表界 面时,咱们能够应用/api/users?page=1&size=100查问从服务器中检索用户列表。攻击者能够将size参数篡改至2000000, 从而导致数据库呈现性能问题。同时,API将无奈响应该客户端的其余申请,或其余客户端的申请,造成DoS。攻击者通过向/api/v1/images发送POST申请来上传大尺寸的图像。在上传实现后,API将创立多个不同大小的缩略图。因为上传的图像过大,可用内存在创立缩略图时被耗尽,API将无奈响应。5 生效的性能级受权5.1 概述攻击者利用破绽将非法的API调用发送 给他们不应拜访的API 端点。这些端点可能会裸露给匿名用户或惯例的非特权用户。因为API更加结构化,并且更易于预测拜访API的形式,因而更容易发现API中的这些缺点(如,将HTTP办法从GET替换为PUT,或将URL中的 “用户”字符串更改为“管理员”)。 5.2 测试用例在仅容许受邀用户退出的应用程序注册过程中,挪动应用程序将触发对GET /api/invites/ {invite_guid}的API调用。响应蕴含一个JSON,其中蕴含无关邀请的详细信息,包含用户的角色和用户的电子邮件。攻击者复制了申请,并批改“role”值为admin,向/api/invites/new收回POST申请。管理员只能应用治理控制台拜访该端点,该控制台未实现性能级别的受权查看。攻击者利用此问题并向本人发送邀请以创立管理员帐户: POST /api/invites/new{“email”:”hugo@malicious.com”,”role”:”admin”} 6 批量调配6.1 概述后端利用对象可能蕴含许多属性,其中一些属性能够由客户端间接更新(如,user.firstname或user.address),而某些属性则不应该更新(如,user.isvip标记)。 6.2 测试用例一个乘车共享应用程序为用户提供了编辑个人资料根本信息的选项。用户能够更新“user_name”、“age”两个参数。 PUT /api/v1/users/me{"user_name":"inons","age":24}发现/api/v1/users/me接口返回一个附加“credit_balance”参数: GET /api/v1/users/me{"user_name":"inons","age":24,"credit_balance":10}攻击者结构报文,重放第一个申请: PUT /api/v1/users/me{"user_name":"attacker","age":60,"credit_balance":99999}攻击者无需领取即可篡改本人的信用值。 7 平安配置谬误7.1 概述平安配置谬误能够产生在一个应用程序堆栈的任何层面,包含平台、Web服务器、应用服务器、数据库、框架和自定义代码。 7.2 测试用例未配置或谬误配置CORS(跨域资源共享) 策略;谬误提醒透露了调用栈跟踪信息或其余敏感信息;S3 bucket权限管制不当,包含非受权拜访、下载和上传;确定API只能被特定HTTP办法拜访,其余的HTTP办法拜访都应该被禁止(如, HEAD办法);8 注入8.1 概述服务端未对客户端提供的数据进行验证、过滤或污染,数据间接应用或者拼接到SQL/NoSQL/LDAP查问语句、 OS命令、XML解释器和ORM(对象关系映射器)/ODM(对象文档映射器)中,产生注入类攻打。 8.2 测试用例判断服务端是否反对XML解析,如果反对,能够尝试XML注入。 <?xml version="1.0" encoding="utf-8"?><!DOCTYPE Anything [<!ENTITY entityex SYSTEM "file:///etc/passwd">]><abc>&entityex;</abc>API未对来自内部零碎(如,集成系统)的数据进行验证、过滤或污染。9 资产治理不当9.1 概述资产治理存在问题,如裸露测试接口地址、未下线旧版本接口。 9.2 测试用例旧版本或者存在破绽版本的API接口未下线,在没有打补丁的状况下继续运行。如:api.someservice.com/v2,将URL中的v2替换为v1使攻击者可能利用旧版本的API接口发动攻打 ;测试接口对公网凋谢;非生产API接口而应用生产数据;

June 25, 2021 · 1 min · jiezi

关于api:工行中行中信等12大开放银行全梳理-IDCF

导读:一文梳理工行、中行、光大银行、浦发银行、中信银行、民生银行、江苏银行、微众银行、新网银行、富民银行、百信银行、京东数科等机构“凋谢银行相干案例”。凋谢银行的理念在国内继续升温,无论是国有大行、股份制银行还是民营银行,都开始逐渐布局凋谢银行。凋谢银行正成为商业银行竞争的策略洼地。这个过程也不乏有金融科技公司,如蚂蚁金服、京东数科等,携手银行业共建凋谢银行。 中国工商银行:构建凋谢的智慧银行生态体系2018 年以来,工商银行启动了智慧银行 ECOS 建设工程,将 “凋谢”作为智慧银行的外围特色,重塑凋谢化新业务架构,施行 IT 架构凋谢化转型,打造一系列跨界单干平台,撑持促成数字化、智能化、凋谢化金融服务建设,推动银行与生态的交融共生, 构建凋谢的“智慧银行生态体系”。 一是将业务架构由外部企业级延展至跨界生态,造成笼罩“全客户、全渠道、全畛域”的全新生态化业务架构,实现客户到用户的从新定义,实现渠道电子化向凋谢单干新生态转变。二是打造“外围业务+凋谢生态平台” 双核心 IT 架构,打造开源、自主可控的科技生态体系,强化对凋谢服务、场景共建以及价值链对外延长的撑持能力。三是造成“自有平台+开放平台”交融共生的建设模式,以自有“三融”平台为 凋谢基石,以 API 开放平台、金融生态云平台为跨界单干抓手, 积极探索良性互动、优势互补、共赢倒退的新生态。为此,工商银行建设施行了互联网金融场景化服务开放平台 (API 开放平台),并于 2018 年上半年正式对外投入经营。 中国银行:中银开放平台中国银行早在 2012 年就提出了开放平台的概念,并在 2013年正式公布中银开放平台,凋谢了 1600 多个接口,波及跨国金融、代收代付、挪动领取,以及地图服务、网点查问、汇率牌价等服务。 中国银行构建了以中银开放平台、场景拓展与治理平台为撑持的技术框架,别离从技术维度、业务维度为中国银行的金融服务输入及场景交融提供无力保障。中银开放平台是中国银行互联网对立的接入平台,提供互联网利用对行内零碎的接入服务。场景拓展与治理平台整合中国银行现有金融服务并采纳 B2B2C 模式对外提供残缺的金融服务,并对中国银行金融产品输入进行对立的渠道层治理,包含产品治理、商户治理、用户治理、账户治理、 交易治理、限额治理、数据管理、参数保护等性能。 目前,中国银行正摸索并构建生态模式。面向一个或几个重点生态场景,以获客为指标,通过凋谢产品与服务,融入生态场景获客。同时通过凋谢用户与流量,整合非金融服务到手机银行APP 中,构建内外部协同的场景生态。在领取、跨境、理财等场景,与大型互联网平台、领取机构、政务平台等单干,提供在线开户、领取、危险测评、外币兑换、黄金投资等金融服务。 中国银行从组织和绩效考核等管理手段推动凋谢银行业务: 总行设立专门团队推动凋谢银行业务倒退,在全国各地分行成立了专项工作组;在总分行均建设跨业务部门的工作组,推动不同 业务间联动;将场景合作伙伴数量及沉闷客户数量纳入考核,激励分行推动场景建设工作。 中国光大银行:双向凋谢,构建凋谢银行危险管理体系一方面,光大银行将金融产品、服务踊跃融入单干公司的生存、生产场景。 2009 年 3 月,光大银行开放式缴费平台正式投产, 以 API 形式将银行的电、水、煤等缴费业务输入至各单干公司渠道,开启十年缴费凋谢之路,目前缴费我的项目冲破 6600 项。2012 年,光大银行是首家将银行智能贷款产品“定存宝”输入至支付宝渠道的商业银行,开启金融产品走进来的先河。 2014 年,光大团体旗下永明保险公司的万能险产品输入至百度金融,随后光大银行一直凋谢理财产品、贷款产品、结算服务、托管服务等。仅贷款 产品、托管服务等,光大银行曾经对外提供 API 接口 720 个,另提供 SDK、H5、小程序等多种接入模式,还可向单干公司输入云平台服务,提供“渠道客户端+公司治理台”的综合服务解决方案。目前,光大银行已与金融科技、交通运输、地产、电力、教育等10余个行业的 1600 余家 B 端单干公司实现单干,为其提供个性化、定制化的“生存+金融服务”解决方案,服务 C 端用户逾 4000万。另一方面,光大银行将手机银行 APP 打造成凋谢的挪动金融生态系统,让手机银行成为与内部单干公司、互联网用户宽泛连贯的枢纽和客户继续经营的平台。 光大银行以手机银行 APP 为外围渠道对外发展宽泛单干,引入单干公司的产品、服务、技术,围绕“衣食住行游娱购”丰盛生存类服务,打造“金融+生存”生态圈。 光大银行同时凋谢用户体系,向更宽泛的挪动互联网用户提供服务。非光大银行客户仅须要手机号就能够注册手机银行,须要进行产品购买时能够间接应用其余银行的银行卡在线开立光大银行的线上II、III类账户,须要应用手机银行全功能时疏导客户至柜台开立 I 类账户。网点从触达客户的第一道门变为晋升客户服务的最初一道门,大大降低客户应用银行线上渠道的门槛,为通过“走进来”策略获取的互联网用户提供基于银行自有平台的接续服务。光大银行通过手机银行丰盛的金融、生存类产品留住并继续经营客户,实现用户向客户的转化,使“走进来”和“引进来”倒退得以相辅相成。 ...

May 19, 2021 · 2 min · jiezi

关于api:快递100快递查询地图轨迹API接口案例代码

一、 快递查问地图轨迹1.1 接口格局提供对立格局的HTTP POST或GET调用接口,并返回格局反对JSON,xml,text,html数据。 1.2 申请地址https://poll.kuaidi100.com/po... 申请参数: 参数名是否必填类型阐明customer是string受权码,请申请企业版获取sign是string签名, 用于验证身份, 按param + key + customer 的程序进行MD5加密(留神加密后字符串肯定要转32位大写), 不须要加上“+”号param是param由其余字段拼接param数据结构: 参数名是否必填类型阐明com是string查问的快递公司的编码, 一律用小写字母num是string查问的快递单号, 单号的最大长度是32个字符phone否string收、寄件人的电话号码(手机和固定电话均可,只能填写一个,顺丰单号必填,其余快递公司选填。如座机号码有分机号,分机号无需上传。)from是string出发地信息,如:广东省深圳市南山区金蝶软件园to是string目的地信息,如:北京朝阳区国际金融大厦show否string返回格局:0:json格局(默认),1:xml,2:html,3:textorder否string返回后果排序:desc降序(默认),asc 升序orderTime否string订单下单工夫,格局为(yyyy-MM-dd HH:mm:ss)如:2020-12-16 12:59:591.3 申请实例customer=** sign=** param={ "com":"ems", "num":"em263999513jp", "phone":"13868688888", "from":"广东省深圳市南山区金蝶软件园", "to":"北京朝阳区国际金融大厦", "show":"0", "order":"desc", "orderTime":"2020-12-16 12:59:59" }1.4 返回后果字段名称类型字段含意messageString音讯体,请疏忽stateInteger快递单以后状态,包含0在途,1揽收,2疑难,3签收,4退签,5派件,6退回,7转单,10待清关,11清关中,12已清关,13清关异样,14收件人拒签等13个状态statusInteger通信状态,请疏忽conditionString快递单明细状态标记,暂未实现,请疏忽ischeckInteger是否签收标记,请疏忽,明细状态请参考state字段comString快递公司编码,一律用小写字母nuString单号trailUrlString轨迹地图链接arrivalTimeString预计达到工夫totalTimeString均匀耗时remainTimeString达到还需多少工夫isLoopBoolean是否存在环路routeInfo 路由信息└from 出发地行政区信息└number 政区信息编码└name 政区信息名└cur 以后地行政区信息└number 政区信息编码└name 政区信息名└to 目的地行政区信息└number 政区信息编码└name 政区信息名datadata最新查问后果,数组,蕴含多项,全量,倒序(即工夫最新的在最前),每项都是对象,对象蕴含字段请开展└ contextString内容└ timeString工夫,原始格局└ ftimeString格式化后工夫└statusString本数据元对应的签收状态,只有实时查问接口中提交resultv2标记后才会呈现└areaCodeString本数据元对应的行政区域的编码,只有实时查问接口中提交resultv2标记后才会呈现└areaNameString本数据元对应的行政区域的名称,只有实时查问接口中提交resultv2标记后才会呈现1.5 提供数据内容{ "message": "ok", "nu": "YT4781863654577", "ischeck": "1", "com": "yuantong", "status": "200", "data": [{ "time": "2020-11-30 13:19:56", "context": "圆通单干点【喵站】快件已达到财产金街院里3号底商驿站,联系电话18744663997", "ftime": "2020-11-30 13:19:56", "areaCode": null, "areaName": null, "status": "在途" }, { "time": "2020-09-12 17:40:58", "context": "【广东省深圳市平湖公司】 已收件 取件人: 刘杰珍 (18128837173)", "ftime": "2020-09-12 17:40:58", "areaCode": "CN440307003000", "areaName": "广东,深圳市,龙岗区,平湖", "status": "揽收" }], "state": "3", "condition": "00", "routeInfo": { "from": { "number": "CN4403", "name": "广东,深圳市" }, "cur": { "number": "CN6101", "name": "陕西,西安市" }, "to": { "number": "CN6101", "name": "陕西,西安市" } }, "isLoop": false, "trailUrl":"https://api.kuaidi100.com/tools/map/bc80574d538262aecc897a469151f0e3", "arrivalTime": "2020-12-19 12:00", "totalTime": "2天1小时", "remainTime": "1天2小时"}1.6 运单签收状态服务阐明状态值名称含意0在途快件处于运输过程中1揽收快件已由快递公司揽收2疑难快递100无奈解析的状态,或者是须要人工染指的状态, 比方说收件人电话谬误。3签收失常签收4退签货物退回发货人并签收5派件货物正在进行派件6退回货物正处于返回发货人的途中7转投货物转给其余快递公司邮寄10待清关货物期待清关11清关中货物正在清关流程中12已清关货物已实现清关流程13清关异样货物在清关过程中出现异常14拒签收件人明确拒收1.7 轨迹链接利用示例<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/782a47be14834488bd62d3bd4163c37d~tplv-k3u1fbpfcp-zoom-1.image" style="zoom:60%"> ...

May 17, 2021 · 1 min · jiezi

关于api:Postman-Windows-10-安装过程

在咱们对 API 进行调试的时候,绝大部分状况都会用到 Postman。 上面这篇文章介绍了 Postman 在 Windows 中的装置过程。 首先请拜访地址: Download Postman | Try Postman for Free 下载最新的 Postman 安装程序。 当初的 Postman 也越做越大了,大抵有 115MB。 双击运行程序 当下载实现后,双击运行程序来进行装置。 随后将会显示程序正在初始化。 当装置实现后,将会提醒你应用账号来进行登录。 如果你在 Postman 的官方网站注册后,并且有本人的用户名和明码的话,能够在这里应用用户名和明码来进行登录。 随后 Postman 将会关上默认的网页浏览器。 在浏览器中,你须要应用你本人的用户名和明码来进行登录。 登录胜利后,你将会把你同步到服务器上的所有空间和 API 载入到本地上来了。 随后,你便能够从载入的空间中查看你本人保留的 API 了。

May 9, 2021 · 1 min · jiezi

关于api:如何从-0-到-1-开发-PyFlink-API-作业

简介: 以 Flink 1.12 为例,介绍如何应用 Python 语言,通过 PyFlink API 来开发 Flink 作业。 Apache Flink 作为以后最风行的流批对立的计算引擎,在实时 ETL、事件处理、数据分析、CEP、实时机器学习等畛域都有着宽泛的利用。从 Flink 1.9 开始,Apache Flink 社区开始在原有的 Java、Scala、SQL 等编程语言的根底之上,提供对于 Python 语言的反对。通过 Flink 1.9 ~ 1.12 以及行将公布的 1.13 版本的多个版本的开发,目前 PyFlink API 的性能曾经日趋完善,能够满足绝大多数状况下 Python 用户的需要。接下来,咱们以 Flink 1.12 为例,介绍如何应用 Python 语言,通过 PyFlink API 来开发 Flink 作业。内容包含: 环境筹备作业开发作业提交问题排查总结 环境筹备第一步:装置 PythonPyFlink 仅反对 Python 3.5+,您首先须要确认您的开发环境是否已装置了 Python 3.5+,如果没有的话,首先须要装置 Python 3.5+。 第二步:装置 JDK咱们晓得 Flink 的运行时是应用 Java 语言开发的,所以为了执行 Flink 作业,您还须要装置 JDK。Flink 提供了对于 JDK 8 以及 JDK 11 的全面反对,您须要确认您的开发环境中是否曾经装置了上述版本的 JDK,如果没有的话,首先须要装置 JDK。 ...

May 7, 2021 · 8 min · jiezi

关于api:看看人家那后端API接口写得那叫一个优雅

在挪动互联网,分布式、微服务流行的明天,当初我的项目绝大部分都采纳的微服务框架,前后端拆散形式,(题外话:前后端的工作职责越来越明确,当初的前端都称之为大前端,技术栈以及生态圈都曾经十分成熟;以前后端人员瞧不起前端人员,那当初后端人员要重新认识一下前端,前端曾经很成体系了)。 个别零碎的大抵整体架构图如下:须要阐明的是,有些小伙伴会回复说,这个架构太简略了吧,太low了,什么网关啊,缓存啊,消息中间件啊,都没有。因为老顾这篇次要介绍的是API接口,所以咱们聚焦点,其余的模块小伙伴们自行去补充。 接口交互 前端和后端进行交互,前端依照约定申请URL门路,并传入相干参数,后端服务器接管申请,进行业务解决,返回数据给前端。 针对URL门路的restful格调,以及传入参数的公共申请头的要求(如:app_version,api_version,device等),老顾这里就不介绍了,小伙伴们能够自行去理解,也比较简单。着重介绍一下后端服务器如何实现把数据返回给前端? 返回格局 后端返回给前端咱们个别用JSON体形式,定义如下: { #返回状态码 code:integer, #返回信息形容 message:string, #返回值 data:object}CODE状态码 code返回状态码,个别小伙伴们是在开发的时候须要什么,就增加什么。 如接口要返回用户权限异样,咱们加一个状态码为101吧,下一次又要加一个数据参数异样,就加一个102的状态码。这样尽管可能照常满足业务,但状态码太凌乱了 咱们应该能够参考HTTP申请返回的状态码 :上面是常见的HTTP状态码:200 - 申请胜利301 - 资源(网页等)被永恒转移到其它URL404 - 申请的资源(网页等)不存在500 - 外部服务器谬误咱们能够参考这样的设计,这样的益处就把谬误类型归类到某个区间内,如果区间不够,能够设计成4位数。 #1000~1999 区间示意参数谬误#2000~2999 区间示意用户谬误#3000~3999 区间示意接口异样这样前端开发人员在失去返回值后,依据状态码就能够晓得,大略什么谬误,再依据message相干的信息形容,能够疾速定位。 Message 这个字段绝对了解比较简单,就是产生谬误时,如何敌对的进行提醒。个别的设计是和code状态码一起设计,如再在枚举中定义,状态码状态码和信息就会一一对应,比拟好保护。 Data 返回数据体,JSON格局,依据不同的业务又不同的JSON体。 咱们要设计一个返回体类Result管制层Controller 咱们会在controller层解决业务申请,并返回给前端,以order订单为例咱们看到在取得order对象之后,咱们是用的Result构造方法进行包装赋值,而后进行返回。小伙伴们有没有发现,构造方法这样的包装是不是很麻烦,咱们能够优化一下。 好看优化咱们能够在Result类中,退出静态方法,一看就懂 那咱们来革新一下Controller代码是不是比拟简洁了,也好看了。 优雅优化下面咱们看到在Result类中减少了静态方法,使得业务解决代码简洁了。但小伙伴们有没有发现这样有几个问题: 1、每个办法的返回都是Result封装对象,没有业务含意2、在业务代码中,胜利的时候咱们调用Result.success,异样谬误调用Result.failure。是不是很多余3、下面的代码,判断id是否为null,其实咱们能够应用hibernate validate做校验,没有必要在办法体中做判断。 咱们最好的形式间接返回实在业务对象,最好不要扭转之前的业务形式,如下图这个和咱们平时的代码是一样的,十分直观,间接返回order对象,这样是不是很完满。那实现计划是什么呢? 实现计划 小伙伴们怎么去实现是不是有点思路,在这个过程中,咱们须要做几个事件 1、定义一个注解@ResponseResult,示意这个接口返回的值须要包装一下2、拦挡申请,判断此申请是否须要被@ResponseResult注解3、外围步骤就是实现接口ResponseBodyAdvice和@ControllerAdvice,判断是否须要包装返回值,如果须要,就把Controller接口的返回值进行重写。 注解类 用来标记办法的返回值,是否须要包装拦截器 拦挡申请,是否此申请返回的值须要包装,其实就是运行的时候,解析@ResponseResult注解此代码核心思想,就是获取此申请,是否须要返回值包装,设置一个属性标记。 重写返回体下面代码就是判断是否须要返回值包装,如果须要就间接包装。这里咱们只解决了失常胜利的包装,如果办法体报异样怎么办?解决异样也比较简单,只有判断body是否为异样类。怎么做全局的异样解决,篇幅起因,老顾这里就不做介绍了,只有思路理分明了,自行革新就行。 重写Controller在控制器类上或者办法体上加上@ResponseResult注解,这样就ok了,简略吧。到此返回的设计思路实现,是不是又简洁,又优雅。 总结 这个计划还有没有别的优化空间,当然是有的。如:每次申请都要反射一下,获取申请的办法是否须要包装,其实能够做个缓存,不须要每次都须要解析。当然整体思路理解,小伙伴们就能够在此基础下面自行扩大。谢谢!!! 起源:r6d.cn/tEvn

April 27, 2021 · 1 min · jiezi

关于api:落地开放银行-深入开放API版本策略-IDCF

凋谢银行尽管有多种对外连贯形式,但API以其易用性成为了接受度最好的抉择,也是很多综合性银行推广凋谢银行必然须要对外提供的外围能力。 简略的API之下,蕴藏着简单的API支撑体系,不论是设计时的命名和路由标准,还是运行时的平安和容错解决,深刻细节都让人生畏。 快慰的是,随着技术的继续演进,越来越多的教训被逐渐提炼成了规范和工具,让整个API的治理继续简化。特地是在英国和新加坡政府被动推动凋谢银行(Open Banking)之后,金融服务畛域在API方面有了越来越多的资产能够为各家银行所采纳。 如果想体验一下凋谢API为金融行业倒退带来的便当,能够参考《开发者体验 – 凋谢银行的奠基石》文中对行业领先者 —— 德意志银行的剖析。 (2021年,英国凋谢银行组织庆贺成立3周年,https://www.openbanking.org.u...然而API版本(Versioning)设计始终是开放平台设计上的老大难问题。 就像过来几十年反对了咱们几大行高速倒退的主机零碎,想要迁徙到开放平台,都是一次宏大的再造工程。而凋谢银行自身的商业模式,又决定了API一旦公布,围绕其生态的干系方是齐全不禁银行管制的。很多银行人都经验过零碎报文格式的切换,切换过程中细枝末节的问题常常造成大家挑灯夜战。但报文自身毕竟还是同业圈子内的降级,可控性较好,凋谢银行却是波及到多元化异业的分布式合作,没有任何一方有相对的控制力。 API版本策略也很难要求各大银行都完全一致,必然受制于各家凋谢业务想法的不同,和外部零碎架构的架构差别。所以具体采纳什么策略实际上是一个业务和技术的综合决策,而业务和技术在API版本策略上的对齐往往被大家疏忽,后果就是业务认为加个接口字段很简略,开发却埋怨毁坏了版本一致性,造成微小的内部兼容性问题。 上面就让咱们从一个绝对综合的视角来研究一下凋谢API的版本模式,促成银行业在凋谢API平台建设方面更多碰撞和思考。 软件版本 VS API版本古代社会每个人都是软件用户,特地是在智能手机遍及的明天,各种各样的软件曾经融入到了咱们日常生活中。对于软件的“降级”是一件司空见惯的事件,很多时候咱们都会被提醒软件版本过低,须要降级能力应用某性能。 挪动APP时代对于软件版本治理本质上是做了大量的简化,不论是苹果的iOS平台,还是安卓Android平台,APP软件的版本都是始终向前降级的。如果忽然关上一款久不应用的APP,提醒版本太低不能应用,或者因为手机操作系统太老旧而无奈应用新版本,咱们都会感觉是常理之中的事件,不会有啥针对软件开发者自身的埋怨。 甚至如果一款APP超过两周都没有任何扭转,咱们会狐疑其沉闷水平,是不是背地老板曾经跑路了。APP软件版本升级成了和服务一起演进的事件,服务越来越好、性能越来越多,天然要求公布新的软件版本,比方双十一前,各大电商必定是要更新几次自家APP的。 当然智能手机之外咱们其实还有很多的大型商业软件,比方每家企业当初都须要的财务管理软件,这些软件在市面上存在着多个版本,因为行业、规模、经营各家企业都不尽相同,所以这样的商业软件用不同的版本适配不同的企业是很常见的。 这之上也有企业几年前买了一个软件版本,因为各种起因,始终应用没有降级,也或者的确满足了企业的需要,没有必要驳回新版本。版本自身在这样的商业软件交易时就是其中一个要害属性,并且个别都有针对后续公布新版本是否驳回方面的合同条款。 凋谢API版本兼具了以上两种软件的特点,但又提出了更高的要求。因为商业单干和生态的继续丰盛,凋谢API显然会继续降级,而且新的版本应该比旧的版本更加高效(不排除性能上有减少,比方拜访鉴权),常见的需要是过来1分钟100笔交易,当初要求1万笔。作为API的使用者,期待和更新手机APP一样,新版本应该更弱小。 不同于手机APP的是,凋谢API降级后不可能强行要求“用户”降级,内部应用API的零碎更新或扭转都不是API发布者能掌控的,并且也不可能通过相似iOS这样的平台去对立应用要求,比方平安合规方面的对立降级。 凋谢API同时也是被多方应用的,和商业软件一样,最开始连贯时采纳的是过后的API版本,后续有的连贯心愿始终用上来,有的可能提出新的述求。当新的述求被新的API版本满足后,作为之前的API使用者,咱们会默认新版本不会毁坏之前的服务,即便新性能对于局部使用者来说没有采纳。 商业软件的世界里,咱们常常会听到版本5.0是一个大降级,必须重新安装,不反对从4.0降级。这时咱们个别有些小烦恼,但卸载4.0,装置5.0也不是太大的艰难。然而如果某API的5.0版本不兼容4.0版本,也就意味着4.0的使用者们须要从新批改本人的零碎,当咱们有成千盈百的内部利用应用该API时,这就是一个微小的挑战,很多时候甚至不得不面临用户的投诉。 API版本致胜准则迎接这样的挑战,咱们首先须要明确凋谢API版本升级的是什么? 首先API是用来传递信息的,信息显然必须遵循肯定的格局。银行从业者立马就能想到报文,比方寰球通行的SWIFT报,每种报文必然须要有相干的字段设计和格局要求,信息的提供者和消费者都必须依据格局标准来,要不然就没法交换了。当然这样的格局调整最好少做,每次都带来了微小的工作量,收益却无限。 (SWIFT报文示例,报文格式自身是信息传递的一部分。任何格局的扭转都要求收发方必须同步,这对于面向凋谢的互联网来说是不事实的) 报文的应用源自于电报时代的点对点信息沟通,却不是咱们这个互联网时代所说的API。API提供的信息某种意义上是针对业务实体的操作,比方增删查改(CRUD),API的命名其实就是要形容这样的操作。这里咱们不纠结于API采纳的实现架构(RESTful和RPC),专一于API版本背地的本质,就会发现其实须要被治理的是业务实体的变动。 类比一下汽车制造商罕用的版本控制形式,飞驰宝马这样的汽车制造商通常每4、5年推出新一代的风行车型,比方宝马的X系列。接下来每年都会有降级版本,比方2019年的X1和2018年的X1性能不同,而且形状上也有稍许不同。每个客户购买的汽车是特定型号的特定版本汽车,如果制造商召回汽车来修复故障,也须要明确型号和版本,当然后续培修是无奈使您2018版本汽车的外观及行为和2019年版本一样的。 回到金融畛域,咱们的业务实体很多,比方某个客户的某种账户、某种类型交易、债券衍生品等等。凋谢API提供了让咱们的合作伙伴可能操作这些实体,比方客户想通过第三方领取利用调转本人账户里的贷款。显然咱们不会把客户账户的信息以报文的模式传递给第三方,API提供的是第三方在客户提供受权信息的状况下,可能告知咱们将客户的资金转往哪个指定账户。 所以API版本的背地是咱们业务实体的变动,比方因为监管合规的要求,客户账户须要进行更进一步的实名验证,更多的信息须要采集和存储,这就扩大了客户账户这个实体的设计。 很显然这样的业务实体变动,在接下来金融服务凋谢普惠的主旋律下是不可避免的,这也是凋谢API平台版本策略为什么是必须思考的一个外围治理问题,好的凋谢API版本策略必然须要满足以下两大准则。 准则一:平台独立性无论外部如何实现API,任何客户端都应该可能依照公布的规定调用API。这就要求API应用凋谢的标准协议,并具备一种机制,让客户端和Web服务端能够就要替换的数据格式达成统一。在整个连贯过程中,API提供方不关注客户端应用方来自于什么平台,即不因为侦测到iOS零碎发来的申请,就提供不同于Android零碎的解决和反馈。 互联网几十年的高速拓展实际上给咱们提供了一整套基于HTTP协定的运作机制,而这套机制是咱们举荐凋谢API设计者们去拥抱的。如果将浏览器比作基于HTTP协定的Web操作系统,那任何的浏览器都须要实现相干的协定规范,从而可能进行Web信息的申请和出现。 准则二:服务兼容性凋谢API应该可能独立于客户端应用程序进行演变和增加性能。随着API的倒退,现有的客户端应用程序应持续运行而无需批改。而且所有性能,比方新的平安认证形式,都应该是可被发现的,以便客户端应用程序能够充沛应用它。 基于HTTP的RESTful架构也给咱们提供了很多解决兼容性的伎俩,超媒体(Hypermedia)的提出某种意义上就是为了解决网络上凋谢接口申请兼容性问题而设计的。当然超媒体的引入会带来整个接口设计、开发到运维老本的较大增长,所以在API设计上,针对不同的上下文(复杂度)也会有很多的解决形式。 一言以蔽之,凋谢API版本的致胜之道就是让应用方感觉“没有版本”,客户端从设计、开发,到公布、经营都不会因为某个API的降级而呈现服务中断。 支流API版本模式咱们谈凋谢API的根底环境是互联网,所以HTTP毫无疑问是必须采纳的协定。如前文提到,在版本策略设计上,心愿尽量不要耦合于特定的实现模式,尽管RESTful是咱们举荐的实现形式,但也了解在一些场景下设计者会偏向于形容更为间接的WebSocket模式。 (有能力的银行也能够效仿亚马逊AWS提供两套实现架构,便于使用者依据本身场景灵便选用。https://aws.amazon.com/cn/api... 基于凋谢API的致胜准则,在解决版本升级挑战上,咱们认为有以下四种常见模式供大家参考。每种模式并非是齐全独立的,很多时候咱们看到不少凋谢API平台也动静采纳着多种模式。 模式一:头文件定制版本字段因为HTTP协定头文件里容许定制字段的扩大,咱们能够采纳 “X-MyAPIVersionRequest-Header: 2.0” 这样的形式来表白申请的myapi是版本2.0。 假如针对客户账户领取的一个凋谢API,1.0版本次要是针对同业的银行合作伙伴,心愿在2.0反对持牌的金融科技公司。针对金融科技公司咱们须要做额定的风控和限额,那么就能够要求金融科技企业的客户端在API申请中必须蕴含这样一个扩大的版本头文件字段。将来也能够针对更多的客群,比方小微商户,公布3.0、4.0,通过版本来明确针对同一业务实体,同一操作的不同步骤。 因为是定制字段,应用方在设计本身的客户端调用时,是须要了解游戏规则的。对于API提供方来说做到了较好的兼容性,但扩展性却受到了肯定的制约,毕竟定制化常识的流传老本是远高于通用型规范的。 模式二:媒体类型扩大版本信息同样是利用HTTP协定头文件中的承受申请媒体类型进行拓展,咱们能够要求“Accept: application/x.myapi+json;version=2.0” 这样的形式来指定申请myapi的第二个版本。 比照第一种定制化字段的形式,这种模式利用了已有的HTTP头文件字段。比拟好的实用于领有默认版本抉择的API,比方客户账户领取操作如果在不指定版本的状况下就走最严格的查看步骤(对应的版本),而一些特定机构能够走其它版本来简化步骤,以进步清理效率。 这种扩大已有字段的模式也存在比拟显著的问题,这些字段的解析有可能曾经被现有的客户端依照规范形式进行了解析和利用。比方针对媒体类型,很可能客户端进行了不同的缓存策略来晋升用户体验,这样的扭转将会让基于规范字段的客户端实现无奈利用。 模式三:路由设计版本门路通过HTTP定位API和Web资源都须要通过URI,很天然咱们也能够在URI上退出版本信息,比方“/v2/myapi”,通过路由来辨认申请的具体API版本。 如果一个API有多个差别较大版本,那么咱们可能就会有“/v3/myapi”、“/v4/myapi”等一系列URI。从客户端视角,因为路由不同,所以其实能够认为每个版本都产生了一个新的API。 这种设计尽管保障了兼容性,但新的性能实际上并没有提供给已有使用者,想用新性能还是须要客户端的扭转。而且新版本减少了API的数量,进步了整体经营老本。 模式四:申请参数版本字段通过HTTP申请资源也容许在URL中带参数,利用这个个性咱们能够传递心愿申请的API版本,比方“/myapi?version=2”。 这种形式的可读性很好,也遵循HTTP的默认规范,对于API设计者来说比拟容易实现,但存在理论经营过程中的挑战,特地是多层级API调用在路由过程中参数传递的问题,某种意义上会毁坏兼容性。在一些通过API网关进行重定向的时候,因为路由零碎不晓得参数的意义,有可能从平安角度主动打消,造成申请真正达到服务侧时参数失落。 以上四种常见模式实际上各自有不同的适用性场景,因而很难说API版本策略肯定是采纳哪种模式。比方当“破坏性”扭转产生在某一个业务实体之上时,采纳显式版本路由来明确调用的API版本就可能是最佳形式;而仅仅是为客户端能够采纳更好的缓存技术来进步用户体验的版本改良,可能采纳头文件中的字段来标注版本就是适合的。 API版本演进策略读到这里,大家可能会认为必须在公布第一个API版本之前定义版本控制策略,否则后续API扭转将会面临微小的挑战。事实却并非如此,可能真正帮忙大家迎战API版本挑战的是策略上的灵便,依据具体业务上下文抉择适合的版本模式。 提早决策可能是件好事件咱们都分明当初软件和零碎所面临的业务不确定性,一开始很难预期接下来针对业务实体的变动,比方当下没有人能够预言将来两年数字货币带来的新需要和新性能是什么样子的。而驾驭这样的不确定性其中的一条黄金定律就是“提早决策”,在遵循了良好凋谢API设计规范的根底之上,造成良好的业务和技术单干,就可能针对每个凋谢API保留将来扭转的灵活性。 解耦每项API治理工作凋谢API自身是一个简单零碎,这里咱们仅仅是谈了版本治理的挑战,如果退出注册发现等机制,咱们会发现的确会相互影响,进而让策略探讨变得异样简单。咱们的倡议依然是放弃这些关注点的拆散,解耦各项治理工作,不要在一项治理策略中引入针对另外几项的依赖,比方版本策略的工作必须依赖于注册机制采纳某种特定模式。一旦开始关联这些工作,咱们就很难设计出真正意义上简略的解决方案。而咱们都晓得在凋谢的互联网生态中,唯有简略才可能长久,唯有容纳才可能生存。 起源:ThoughtWorks商业洞见作者:肖然 每周四晚8点【冬哥有话说】线上直播,4月“DevOps之庖丁解牛”,拆解DevOps的工具及具体实战。公众号留言“回放”可查看往期直播视频 0401《数据库继续交付流水线分享与演示(Azure DevOps+Flyway)》0408《继续交付中的版本治理与基于Azure DevOps扩大框架的插件开发》工夫待定《微服务,多团队合作中的API测试怎么做 - Pact契约测试》工夫待定《BoatHouse端到端流水线展现》

April 26, 2021 · 1 min · jiezi

关于api:在线网页网站截图截屏快照API接口

工具地址:https://www.screenshotmaster....文档地址:https://www.screenshotmaster.... 介绍: 网页截屏巨匠应用真正的Chrome浏览器捕获像素完满的屏幕截图,咱们的外围服务托管在阿里云与腾讯云之上,API人造分布式、高可用。 起步您能够应用 GET 或者 POST 向上面的入口发动一个网页截屏申请。 https://api.screenshotmaster....例子如果要获取百度首页的图片 您能够将 baidu.com 增加到 url 参数中以发动申请。 https://api.screenshotmaster....认证增加 token 参数在您的API申请中以取得认证。 https://api.screenshotmaster....

April 20, 2021 · 1 min · jiezi

关于saas:从能耗大户变身智能绿色办公只需一步到位

传统企业办公能耗剖析计算机能耗剖析:一年耗费电费:1.4 度 1.2 元 365 天 = 613.2 元,一年耗费电费 * N 台 = ??? 饮水机能耗剖析:饮水机功率广泛在 600 瓦左右,一年的费用:0.6 千瓦 10 小时 1.2 元 365 天 = 2628 元。一年的费用 N 台 = ??? 打印机能耗剖析:以 HP 黑白激光打印机为例,节能状态为 12 瓦,如果能在上班时定时关机,那么一年能节约的电费为:0.012 千瓦 20 小时 365 天 * 1.2 元 = 105.12 元。 …… 一堆数据下来,或者会感觉能耗不是很高?但,以上只是一些典型办公设备一台的耗电量。除了以上设施,还有空调、显示屏、灯等等设施,这其中的能耗,一年下来,足以让人咋舌。 能耗老本作为企业付现老本重要组成部分,是企业目前急需解决的痛难点,也是企业降本增效重要关注节点之一。除此 之外,传统办公行业还有以下痛点: 信息反馈提早,透明度低:访客接待曾经是各大公司对外进行品牌和能力展现的重要渠道之一,而随之而来的来访信息不精确,以及会议室绑定信息不通明等问题,却让行政人员焦头烂额。如何突破信息滞后、不精准等问题,已成为企业迫不及待的事件; 数字化水平低,治理老本高:企业不足资产两头跟踪治理过程(如购入/转移/调拨/培修/处理)等历史记录。资产流程管理控制艰难,对资产流动治理过程中的谬误、遗失等问题无奈无效管制,并且流程繁琐容易出错,治理操作未造成日志,最初造成财务账面的固定资产和行政治理的实物资产不能对应。 科技驱动,办公空间降级转型面对飞速变动的外部环境,企业传统的办公空间模式须要与时俱进。在策略、机构、人力资源以及治理理念的改革上,企业须要适时、适当地进行推动,拥抱数字化转型,以适应一直变动的内外环境,满足企业持续生存、倒退、壮大的需要。 面向不同的客户群体和场景需要,目前市面上别离有两种解决方案: 企业办公空间智能化:面向独立企业主的办公空间。随着人工智能、物联网、云计算等技术的疾速倒退,企业数字化、智能化正在逐渐成为行业标配。能耗治理,智能会议室,智慧照明,环境检测,智慧安防等零碎在企业的利用,将极大水平丑化企业办公环境,激发员工归属感,进步企业运行效率,晋升企业品牌形象。 共享办公空间规模化:依据艾媒征询行业报告数据显示, 2019-2020 年,中国共享办公行业经验了行业低谷,然而办公生产降级的趋势依然存在,且共享办公企业占办公行业比例依然较小,将来市场发展潜力微小, 2020 年共享办公行业市场规模达 1368.2 亿元,预计 2022 年规模将达到 2273.5 亿元。 数据起源:艾媒数据中心( data.iimedia.cn ) ...

April 16, 2021 · 1 min · jiezi

关于api:丰网速运单号查询接口快递鸟API

前言顺丰斥资1000万成立深圳丰网速运有限公司。其中,顺丰速运出资800万,持股80%,中金出资200万,持股20%。 据悉,该公司成立工夫为2020年4月7日,法人代表为吴国忠,杨尊淼、李祥乐任董事,马立军任监事。 经营范围包含:国内货运代理;经济技术咨询;技术信息征询;以特许经营方式从事商业活动;经营进出口业务;机械设备租赁;汽车租赁;屋宇租赁业务;商务服务、商务代理;过境货物运输代理;3C产品检测、维修服务。许可经营项目是:国内、国内快递;国内供应链;一般货运;货物专用运输,大型物件运输;仓储服务。 接下来给大家解说一下如何对接丰网速运的快递查问接口。 调用快递鸟的丰网速运查问API接口,能查问到丰网速运单号从收件、运输,到转运核心,派送到签收等各个环节的物流发货状态。快递鸟api接口不辨别开发语言,反对Java,C#,PHP,Python,ObjectC等开发语言的程序调用。上面具体解说实现过程. 目录1.实现后期筹备工作 2.API接口 3.申请参数(Headers) 4.申请参数(Body) 5.返回参数(Return) 6.申请残缺报文(示例) 7.胜利返回报文(示例) 8.失败返回报文(示例) 9.无轨迹返回报文(示例) 10.分步解说(C#版本) 11.顺丰快递查问接口利用成果 12.对于签名 13.返回码定义 1.实现后期筹备工作1.1,去快递鸟官网收费注册一个账号 1.2,收费取得一个apiKey(接口权限验证须要) 1.3,实现实名认证流程 1.4,订购一个收费套餐 2.API接口 2.1,测试调用地址:http://sandboxapi.kdniao.com:... 2.2,正式调用地址:http://api.kdniao.com/api/dist 2.3,申请形式:POST 2.4,编码格局(utf-8):application/x-www-form-urlencoded;charset=utf-8 2.5,返回类型:JSON 2.6,调试页面:http://kdniao.com/UserCenter/... 2.7,调试工具:去调试(应用快递鸟账号登录) 3.申请参数(Headers)参数名称 类型 阐明 必须要求RequestData String 申请内容需进行URL(utf-8)编码,申请内容JSON格局,须和DataType统一 必填EBusinessID String 用户ID,查看用户ID和ApiKey 必填RequestType String 申请指令类型:1002 必填 DataSign String 签名数据,(Body+ApiKey)进行MD5加密,再进行Base64编码,最初进行URL(utf-8)编码 必填DataType String 求、返回数据类型:2-json ,默认Json 选填 4.申请参数(Body)参数名称 类型 阐明 必须要求OrderCode String 订单编号 选填ShipperCode String 快递公司编码,丰网速运:SF 必填LogisticCode String 物流运单号 必填 5.返回参数(Return)参数名称 类型 阐明 必须要求EBusinessID String 用户ID 必填ShipperCode String 快递公司编码 必填LogisticCode String 物流运单号 选填Success String 胜利与否 必填Reason String 失败起因 选填State String 物流状态:2-在途中,3-签收,4-问题件 必填Traces String 工夫 AcceptTime String 必填AcceptStation String 形容 选填Remark String 备注 必填 ...

April 15, 2021 · 3 min · jiezi

关于api:寻找可接入正版音乐库的音乐API可了解HIFIVE音乐开放平台

HIFIVE音乐开放平台基于HIFIVE数百万正版音乐版权内容,为直播、短视频、工具利用、智能硬件等场景提供音乐解决方案。 点击理解:open.hifiveai.com HIFIVE音乐开放平台提供以下接入服务: 服务服务形容获取音乐列表通过歌单获取音乐列表, 通过关键词搜寻获取音乐列表, 通AI音乐举荐获取音乐列表音乐播放获取音乐试听版本, 获取残缺音乐文件AI剪辑联合AI举荐技术实现音乐剪辑,实现短视频主动配乐。AI作词作曲通过自定义的格调、主题、情绪等多维度标签进行交互式/一键式的音乐生成。AI智能识曲对BGM进行剖析与提取,得出歌曲信息报告。人声拆散人声与音乐进行拆散,失去污浊背景音乐,帮忙直播平台从流行乐中提取伴奏。HIFIVE音乐开放平台通过技术手段实现音乐版权产业全流程的数字化、标准化、联网化、智能化、平台化,实现音乐版权链路闭环. 接入简略反对SDK/API接入,30分钟疾速集成上线。 服务端可通过api接入,也能够下载Java/PHP/Python SDK间接应用。 Android/iOS客户端能够依据须要抉择是否应用带UI版本的SDK获取音乐实现音乐播放。客户端SDK如下图示: 按使用量付费按用户理论使用量付费,性价比高,灵活性强。 依据用户应用的音乐版权时长/歌曲数量、带宽应用状况进行计费,助力中小企业疾速启动我的项目。 曲库全凋谢百万曲库全凋谢给用户,没有歌曲数量及歌曲范畴限度。 领有环球、Sony/ATV、EMI三大音乐团体的商用音乐曲库,合纵、Hip Land Music、WMP、FujiPacific Music等寰球音乐公司音乐作品,独立音乐人如:卢庚戌、陈鸿宇、房东的猫、寰球街舞冠军肖杰等等独立音乐作品,以及影视剧OST。开明HIFIVE音乐开放平台的用户可通过曲库、歌单广场页面筛选歌曲受权至本人平台进行应用。 AI技术赋能AI作词,AI作曲,AI智能识曲,人声拆散,AI举荐,AI剪辑,AI音频监测。 AI音乐创作,作词/作曲/编曲/人声合成演唱,打造互动式音乐创作工具,演示地址:https://hi.hifiveai.com/。 4000亿+音乐指纹撑持全网精准的音乐查找与匹配,进而对BGM进行剖析与提取,得出歌曲信息报告,演示地址:https://audio.hifiveai.com/。 将带有人声的音频进行人声的辨认,并且能够将人声与背景音乐进行拆散,失去污浊的背景音乐,放弃高准确率的根底上,反对立体声拆散,音质无损。 训练多维度音乐标签模型,数百万歌曲实现AI音乐标签标注,多年深耕泛娱乐行业,打造场景式音乐散发和智能举荐。 通过对音频信号处理失去自相似矩阵,利用图像处理的卷积运算对该自相似矩阵进行监测,联合AI举荐技术实现剪辑实现短视频主动配乐。 具体的视频采集数据,4000亿+音乐指纹数据,全网高精度音视频版权监测技术,达到99%+辨认准确率,为版权方进行维权取证。 提供经营能力提供经营控制台自主经营,同时提供业余经营团队实现一对一经营,向用户提供清晰的数据报表。 控制台可治理平台应用的歌曲、歌单、电台,HIFIVE通过歌单AI匹配、经营团队自主打造流动歌单受权到平台,C端用户可依据行为剖析精准为用户举荐类似歌曲。 控制台可查看清晰的数据分析,帮忙平台更好的进行音乐经营。

March 31, 2021 · 1 min · jiezi

关于api:聚合数据常用快递接口代码

聚合数据罕用快递接口申请地址:https://www.juhe.cn/docs/api/id/43 ashx代码 publicvoid ProcessRequest(HttpContext context)       {           context.Response.ContentType = "text/plain";           string appkey ="";//配置您申请的appkey                           //1.罕用快递查问API                      string url1 ="http://v.juhe.cn/exp/index";           var parameters1 =newDictionary<string,string>();           parameters1.Add("com","");//须要查问的快递公司编号                      parameters1.Add("no","");//须要查问的订单号                      parameters1.Add("key", appkey);//你申请的key                      parameters1.Add("dtype","json");//返回数据的格局,xml或json,默认json                       string result1 = sendPost(url1,parameters1,"get");           JsonObject newObj1 =newJsonObject(result1);           String errorCode1 =newObj1["error_code"].Value;           if (errorCode1 =="0")           {              context.Response.Write(newObj1);               return;           }           else           {               Console.WriteLine(newObj1["error_code"].Value + ":" + newObj1["reason"].Value);           }       }        publicbool IsReusable       {           get           {               returnfalse;           }       }       ///<summary>       /// Http (GET/POST)       ///</summary>       ///<param name="url">申请URL</param>       ///<param name="parameters">申请参数</param>       ///<param name="method">申请办法</param>       ///<returns>响应内容</returns>       staticstring sendPost(string url, IDictionary<string,string> parameters,string method)       {           if (method.ToLower()=="post")           {               HttpWebRequest req =null;               HttpWebResponse rsp =null;               System.IO.Stream reqStream =null;               try               {                   req = (HttpWebRequest)WebRequest.Create(url);                   req.Method = method;                   req.KeepAlive = false;                   req.ProtocolVersion = HttpVersion.Version10;                   req.Timeout = 5000;                   req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";                   byte[] postData =Encoding.UTF8.GetBytes(BuildQuery(parameters,"utf8"));                   reqStream =req.GetRequestStream();                   reqStream.Write(postData,0, postData.Length);                   rsp = (HttpWebResponse)req.GetResponse();                   Encoding encoding =Encoding.GetEncoding(rsp.CharacterSet);                   returnGetResponseAsString(rsp, encoding);               }               catch (Exception ex)               {                   return ex.Message;               }               finally               {                   if (reqStream !=null) reqStream.Close();                   if (rsp !=null) rsp.Close();               }           }           else           {               //创立申请               HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + "?" +BuildQuery(parameters,"utf8"));                //GET申请               request.Method = "GET";               request.ReadWriteTimeout =5000;               request.ContentType = "text/html;charset=UTF-8";               HttpWebResponse response = (HttpWebResponse)request.GetResponse();               Stream myResponseStream =response.GetResponseStream();               StreamReader myStreamReader =newStreamReader(myResponseStream,Encoding.GetEncoding("utf-8"));                //返回内容               string retString =myStreamReader.ReadToEnd();               return retString;           }       }        ///<summary>       ///组装一般文本申请参数。       ///</summary>       ///<param name="parameters">Key-Value模式申请参数字典</param>       ///<returns>URL编码后的申请数据</returns>       staticstring BuildQuery(IDictionary<string,string> parameters,string encode)       {           StringBuilder postData =newStringBuilder();           bool hasParam =false;           IEnumerator<KeyValuePair<string,string>> dem =parameters.GetEnumerator();           while (dem.MoveNext())           {               string name =dem.Current.Key;               string value =dem.Current.Value;               //疏忽参数名或参数值为空的参数               if (!string.IsNullOrEmpty(name))//&& !string.IsNullOrEmpty(value)               {                   if (hasParam)                   {                       postData.Append("&");                   }                   postData.Append(name);                   postData.Append("=");                   if (encode =="gb2312")                   {                       postData.Append(HttpUtility.UrlEncode(value,Encoding.GetEncoding("gb2312")));                   }                   elseif (encode =="utf8")                   {                       postData.Append(HttpUtility.UrlEncode(value,Encoding.UTF8));                   }                   else                   {                       postData.Append(value);                   }                   hasParam = true;               }           }           returnpostData.ToString();       }        ///<summary>       ///把响应流转换为文本。       ///</summary>       ///<param name="rsp">响应流对象</param>       ///<param name="encoding">编码方式</param>       ///<returns>响应文本</returns>       staticstring GetResponseAsString(HttpWebResponse rsp, Encoding encoding)       {           System.IO.Stream stream =null;           StreamReader reader =null;           try           {               //以字符流的形式读取HTTP响应               stream =rsp.GetResponseStream();               reader = newStreamReader(stream, encoding);               return reader.ReadToEnd();           }           finally           {               //开释资源               if (reader !=null) reader.Close();               if (stream !=null) stream.Close();               if (rsp !=null) rsp.Close();           }       }  2.前台代码 ...

March 29, 2021 · 1 min · jiezi

关于api:聚合数据二维码生成API-案例

应用聚合数据提供的收费二维码生成器;申请地址:https://www.juhe.cn/docs/api/id/296 在pom,xml中引入模板jar包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>在service层建设一个HttpClient,用于对外网收回http申请。 import org.springframework.http.HttpMethod;import org.springframework.http.ResponseEntity;import org.springframework.stereotype.Service;import org.springframework.util.MultiValueMap;import org.springframework.web.client.RestTemplate;/** 1. @author DXG 2. @date 2018/11/7 0007. */@Servicepublic class HttpClient { public String client(String url, HttpMethod method, MultiValueMap<String, String> parms) { RestTemplate template = new RestTemplate(); ResponseEntity<String> response = template.getForEntity(url, String.class); return response.getBody(); }}建设base64与image的工具转换类 import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;public class Base64Test { /** * 图片转化成base64字符串 * * @param imgFile 图片门路 * @return */ public static String GetImageStr(String imgFile) {//将图片文件转化为字节数组字符串,并对其进行Base64编码解决 InputStream in = null; byte[] data = null; //读取图片字节数组 try { in = new FileInputStream(imgFile); data = new byte[in.available()]; in.read(data); in.close(); } catch (IOException e) { e.printStackTrace(); } //对字节数组Base64编码 BASE64Encoder encoder = new BASE64Encoder(); //返回Base64编码过的字节数组字符串 return encoder.encode(data); } /** * base64字符串转化成图片 * * @param imgStr * @return */ public static boolean GenerateImage(String imgStr, String imgFilePath) { //对字节数组字符串进行Base64解码并生成图片 //图像数据为空 if (imgStr == null) { return false; } BASE64Decoder decoder = new BASE64Decoder(); try { //Base64解码 byte[] b = decoder.decodeBuffer(imgStr); for (int i = 0; i < b.length; ++i) { //调整异样数据 if (b[i] < 0) { b[i] += 256; } } //生成jpeg图片 //新生成的图片 OutputStream out = new FileOutputStream(imgFilePath); out.write(b); out.flush(); out.close(); return true; } catch (Exception e) { return false; } }}在Controller层建设测试连贯。 ...

March 29, 2021 · 2 min · jiezi

关于物联网:大食代来临后厨重地可以更聪明点儿

既不像周一周二还带着上周末的余欢,又不像周四周五携着这周末的期盼,令人昏昏欲睡的周三只能靠一杯咖啡援救。 正好公司里入驻了咖啡机,智能管制设施运行,无人工经营老本,口味还保留着门店般的原汁原味,一杯咖啡,提神醒脑。咖啡机的“智能入驻”,让美食造成生态,实现了厨房与内部社会的关联。 餐饮厨房行业以后现状“民以食为天”这句话不是说说而已。依据欧睿的数据,能够判断整个中国餐饮市场产业规模目前共约 11 万亿,预计至 2022 年整体规模可达 12.04 万亿(不含公共机构)。其中,家庭/集体食品生产约 4.6 万亿,生鲜、包装视频类电商规模 5134 亿,餐饮服务业生产共计 6.91 万亿,其中外出就餐 5.76 万亿,外卖市场约 1.15 万亿。餐饮服务业生产位居首位。 数据起源:国家统计局, Euromonitor(含预测),中信证券研究部 餐饮行业的增长同步带动了行业对商用厨房的业务需求量,具体表现以下三个方面: 星级酒店餐饮对厨房的需要;社会餐饮对厨房及配套设施的需要;连锁和集中配餐对地方厨房的需要。蓝海就在这里,谁先抓住物联网红利,谁就将博得先机! 餐饮标准化大势所趋,智慧厨房来助力餐饮行业的“标准化”意味着流程的标准化、治理的标准化、烹饪与滋味的标准化、物流的标准化及服务的标准化,缺一不可。那么这也就意味着餐饮行业须要实现全产业的可数据化、可掂量、可细化闭环,智能化是惟一的抉择。 涂鸦智能智慧厨房解决方案基于Powered by Tuya 智能设施生态和云端 PaaS 能力,以及丰盛的云菜谱等,为智慧厨房提供智能化管制、实时无感数据采集和剖析等服务,助力智慧餐饮行业客户晋升管理效率,实现智能化降级转型。 智慧厨房解决方案次要分为两大块:智能厨电和智慧厨房平台。 智能厨电针对厨具厂商,利用传感技术及外围算法,将各类智能厨电连接起来。再加上语音声控性能,实时通过语音管制各厨具设施,可实现流程、治理和烹饪与滋味的标准化: 云菜谱:菜谱内容寰球部署,云端编辑指令,一键烹饪,操作更简略;实时比对:使用智能滚炒机、智能电烤箱、智能灶具等智能设施,对火候、滋味等实时判断、比对、校对,还原大厨烹饪技能,冲破传统西餐对厨师的依赖,升高人力老本;数据联控:实时治理各类智能厨电,联动管制,随时启停。智慧厨房平台针对餐饮行业客户,基于涂鸦云平台和手机 App 及微信小程序,集智能厨电平台、智能厨具平台、云端菜谱等于一体,与厨电制造商独特打造基于 IoT 的智能烹煮零碎,并继续连贯更具生命力的技术与服务,搭建后厨、门店、物流以及消费者多方交互的商业服务平台,买通餐饮上中下游产业链,建设餐饮生态圈,实现餐饮行业全产业闭环,实现物流的标准化及服务的标准化: 云菜谱治理:厨电行业当先的菜谱内容治理平台,反对 31 种多语言可配置,让寰球大厨及烹饪爱好者共享菜谱,继续翻新云端菜谱;厨房平安:厨房设备智能化联动,平安保障,被动售后;门店治理:人员系统性治理,节俭人力老本;消费者交互:及时治理用户用餐信息及评估,进而优化菜谱,翻新菜品。 成长中谋布局,改革中求倒退随着疫情影响的逐渐弛缓,餐饮行业长期成长空间广大,这也将带来餐饮行业新一轮的厮杀。要在这片“硝烟”中杀出重围,连锁扩张是大势所趋,而连锁扩张的基石则是标准化。智慧厨房解决方案基于超 20 万款 Powered by Tuya 智能产品,笼罩超过 220 个国家和地区的服务,辐射寰球超过 10 万个线上和线下的销售渠道,助力餐饮行业客户全产业标准化闭环,从菜谱、食材、配送,到门店和消费者。无论是厨电厂家、智慧厨房零碎集成商、智慧餐饮软件开发商,还是智慧后厨计划商、餐饮/校园/酒店/后厨开发商,涂鸦智能都能为其提供集开源技术、经营工具、销售渠道等的一站式解决方案。 世界很大,一起涂鸦! 戳这里>>>涂鸦智能智慧厨房解决方案,获取智慧厨房方案设计。

March 26, 2021 · 1 min · jiezi

关于api:使用-Kong-的负载均衡功能

业务场景假如咱们在abc.com域名下有两个服务,别离为 Search-Service 和 API-Service。 用户端Search-Service 提供搜寻服务,通过search.abc.com为用户提供服务。API-Service 提供搜寻服务,通过api.abc.com为用户提供服务。 用户看不到这两个服务的实现细节。 服务端晚期,Search-Service 外部应用百度提供的搜寻服务。起初,Search-Service 减少了必应的提供的搜寻服务,用户对此减少的过程无感知。最终,Search-Service 依照肯定的权重来应用两者的服务。 API-Service 外部应用聚合数据提供的API服务,为了保障稳定性,聚合数据提供了两套服务,API-Service 依照肯定的权重来应用这两套服务。 架构图 在 Konga 中新建 Upstream新建 search-upstream有 baidu.com 和 bing.com 两个Target,权重各为100。 新建 api-upstream有 op.juhe.cn 和 v.juhe.cn 两个Target,权重各为100。 在 Konga 中新建 Service 在 Konga 中新建 Route 测试失常状况用浏览器屡次拜访:search.abc.com:8000(kong监听8000端口,域名须要本地解析),发现跳转到百度和必应的状况各占50%。 输入后果占比跳转到必应50%跳转到百度50%用浏览器屡次拜访:api.abc.com:8000(kong监听8000端口,域名须要本地解析): 输入后果占比备注Juhe Open Api V1.050%http://op.juhe.cn/ 的输入后果Juhe Open Api V3.050%http://v.juhe.cn/ 的输入后果一个 Target 生效的状况将聚合数据提供的其中一个服务标记为生效: 用浏览器屡次拜访:api.abc.com:8000(kong监听8000端口,域名须要本地解析): 输入后果占比备注Juhe Open Api V1.00%http://op.juhe.cn/ 的输入后果Juhe Open Api V3.0100%http://v.juhe.cn/ 的输入后果可见,尽管其中一个 Target 生效,对应用 api.abc.com 的用户来说,服务仍然是可用的。 原文链接:https://www.sdk.cn/details/oL3eV8jW2woDkwAW0Y ...

March 23, 2021 · 1 min · jiezi

关于api:基于聚合数据的免费天气预报接口查询PHP版

1、开明接口天气预报接口服务应用的聚合数据提供的收费接口,每天能够100次收费调用。能够通过https://www.juhe.cn/docs/api/id/73注册及开明。 2、通过PHP发动城市天气查问<?php// 申请的接口URL$apiUrl = 'http://apis.juhe.cn/simpleWeather/query';// 申请参数$params = [ 'city' => '苏州', // 要查问的城市 'key' => '您申请的接口调用Key'];$paramsString = http_build_query($params);// 发动接口网络申请$response = juheHttpRequest($apiUrl, $paramsString , 1);$result = json_decode($response, true);if ($result) { $errorCode = $result['error_code']; if ($errorCode == 0) { // 获取返回的天气相干信息,具体依据业务理论逻辑调整批改 $data = $result['result']; // 打印以后实况天气信息 echo "以后城市:{$data["city"]}".PHP_EOL; echo "以后温度:{$data["realtime"]["temperature"]}".PHP_EOL; echo "以后湿度:{$data["realtime"]["humidity"]}".PHP_EOL; echo "以后天气:{$data["realtime"]["info"]}".PHP_EOL; echo "以后风向:{$data["realtime"]["direct"]}".PHP_EOL; echo "以后风力:{$data["realtime"]["power"]}".PHP_EOL; echo "以后空气质量:{$data["realtime"]["aqi"]}".PHP_EOL; } else { // 申请异样 echo "申请异样:{$errorCode}_{$result["reason"]}".PHP_EOL; }} else { // 可能网络异样等问题,无奈失常取得相应内容,业务逻辑可自行批改 echo "申请异样".PHP_EOL;}/** * 发动网络申请函数 * @param $url 申请的URL * @param bool $params 申请的参数内容 * @param int $ispost 是否POST申请 * @return bool|string 返回内容 */function juheHttpRequest($url, $params = false, $ispost = 0){ $httpInfo = array(); $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36'); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3); curl_setopt($ch, CURLOPT_TIMEOUT, 12); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); if ($ispost) { curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); curl_setopt($ch, CURLOPT_URL, $url); } else { if ($params) { curl_setopt($ch, CURLOPT_URL, $url.'?'.$params); } else { curl_setopt($ch, CURLOPT_URL, $url); } } $response = curl_exec($ch); if ($response === FALSE) { // echo "cURL Error: ".curl_error($ch); return false; } $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $httpInfo = array_merge($httpInfo, curl_getinfo($ch)); curl_close($ch); return $response;}3、通过PHP发动生存指数查问// 申请的接口URL$apiUrl = 'http://apis.juhe.cn/simpleWeather/life';// 申请参数$params = [ 'city' => '苏州', // 要查问的城市 'key' => '您申请的接口调用Key'];$paramsString = http_build_query($params);// 发动接口网络申请$response = juheHttpRequest($apiUrl, $paramsString , 1);$result = json_decode($response, true);if ($result) { $errorCode = $result['error_code']; if ($errorCode == 0) { // 获取返回的天气相干信息,具体依据业务理论逻辑调整批改 $data = $result['result']['life']; // 打印以后实况天气信息 echo "空调指数:{$data['kongtiao']['v']},{$data['kongtiao']['des']}".PHP_EOL; echo "过敏指数:{$data['guomin']['v']},{$data['guomin']['des']}".PHP_EOL; echo "舒适度指数:{$data['shushidu']['v']},{$data['shushidu']['des']}".PHP_EOL; echo "穿衣指数:{$data['chuanyi']['v']},{$data['chuanyi']['des']}".PHP_EOL; echo "钓鱼指数:{$data['diaoyu']['v']},{$data['diaoyu']['des']}".PHP_EOL; echo "感冒指数:{$data['ganmao']['v']},{$data['ganmao']['des']}".PHP_EOL; echo "紫外线指数:{$data['ziwaixian']['v']},{$data['ziwaixian']['des']}".PHP_EOL; echo "洗车指数:{$data['xiche']['v']},{$data['xiche']['des']}".PHP_EOL; echo "静止指数:{$data['yundong']['v']},{$data['yundong']['des']}".PHP_EOL; echo "带伞指数:{$data['daisan']['v']},{$data['daisan']['des']}".PHP_EOL; // ....... } else { // 申请异样 echo "申请异样:{$errorCode}_{$result["reason"]}".PHP_EOL; }} else { // 可能网络异样等问题,无奈失常取得相应内容,业务逻辑可自行批改 echo "申请异样".PHP_EOL;}

March 23, 2021 · 2 min · jiezi

关于api:云原生API处理平台支流科技再获数百万美元融资将持续进行开源社区及生态构建

3 月 23 日,间隔一个月之前干流科技发表取得由真成投资领投、真格基金跟投的数百万美元 Pre-A 轮融资后,干流科技再次发表取得由顺为资本领投、真格基金跟投的 A 轮数百万美元融资。 干流科技创始人温铭示意,本轮融资将用于减速干流科技在人才引进、产品研发、开源社区及生态构建等方面投入。 对于本轮融资,顺为资本执行董事耿益璇示意: 干流科技的开创团队在开源产品研发和社区经营方面有独到的见解和教训,作为一个独立守业公司经营的开源我的项目, Apache APISIX 在不到 2 年工夫内就获得了突出的问题。咱们认为开源模式在云计算时代是一种更先进的软件生产方式,而 API 网关也是云原生微服务架构降级中的外围组件。咱们期待干流科技以 APISIX 我的项目为抓手,在微服务流量和 API 资产治理畛域拓展出一片广阔天地。干流科技是一家开源云原生 API 治理平台开发商。干流科技在 2019 年 6 月份开源了云原生 API 网关 Apache APISIX,Apache APISIX 是一个动静、实时、高性能的 API 网关,能够用来解决网站、挪动设施和 IoT 的流量,可提供负载平衡、动静上游、灰度公布、服务熔断、身份认证、可观测性等七层流量治理性能。 Apache APISIX 于 6 月份开源后,干流科技在同年 10 月将其捐献给 Apache 基金会开始孵化。2020年7月「Apache APISIX」顺利毕业,是中国最快毕业的顶级我的项目。 API 网关是企业的要害根底组件,特地是对于应用了微服务、服务网格等云原生的古代架构。Apache APISIX 不仅能够用来解决网站、挪动设施和 IoT 的流量,也能够在混合云和异构零碎之间建设平安和疾速的连贯,满足企业疾速的迭代和交付。 “目前咱们曾经有一些付费用户,包含几家世界 500 强的公司。”温铭示意。在其看来,开源我的项目有着得天独厚的社区劣势,有大量的开发者和应用公司集思广益,帮忙产品迭代和欠缺。这种开源商业化模式在中国也逐步失去了大家的宽泛认可。 目前已有泛滥国内外出名互联网和传统行业公司采纳 Apache APISIX,应用案例散布在金融、电信运营商、物联网、批发、在线教育、航空航天等多个行业,包含 NASA、航天网信、欧盟数字工厂、思必驰、中国移动、腾讯、虎牙、奈雪的茶、雪球、地面云汇、作业帮、嘀嗒出行、明源云等。 Apache APISIX 在开源以来始终放弃着疾速的倒退,目前曾经有近 200 名代码贡献者。在 2020 年第四季度,APISIX 主我的项目合并了 700 多个 PR(Pull Requst),新建了 700 多个 issue,每个月的代码提交者都超过 30 人,是 GitHub 上活跃度最高的 API 网关我的项目。目前,APISIX 放弃着每个月公布一个版本的迭代速度。 ...

March 23, 2021 · 1 min · jiezi

关于api:使用聚合数据接口发送短信

前提条件到如下网址注册聚合数据账户https://www.juhe.cn/登录后进入集体核心进行企业认证认证胜利后通过如下网址申请短信接口https://www.juhe.cn/docs/api/id/54期待接口审核通过后你会失去一个接口的appkey 配置框架参数在src.resource上面有一个juhedata_config.xml的配置文件 <juheconfig> <sms appkey="//TODO" url="http://v.juhe.cn/sms/send"></sms> <phone-owner appkey="//TODO" url="http://apis.juhe.cn/mobile/get"></phone-owner></juheconfig>配置文件解释你只须要把申请到的短信接口的appkey配置到sms节点的appkey属性就能够了留神这个配置文件中还有phone-owner的配置节点,这个是获取手机号码归属地的接口配置,会在其余文档对此进行阐明。 代码调用应用办法com.base.common.util.transport.juhe.JuheSMSAPI.getInstance().sendMessage(String tempId, String phoneNumber, Map<String, Object> params) 参数解释tempId在申请到短信接口后,是不能想发什么短信就发什么短信的 ,必须基于模板来发送,模板须要本人创立,并且须要聚合数据审核,通过审核后的模板会失去一个模板编号,这里的tempId就是传这个模板编号phoneNumber短信接收者的电话号码,11位手机号码params传递对应模板占位符的具体数据,聚合数据的占位符要以#结尾并且以#结尾,如下#money# 和#balance#就是占位符 尊敬的用户您好,您已胜利充值#money#元,以后余额为#balance#元。这时候你应该组装的params参数如下 Map<String, Object> params = new HashMap<String, Object>();params.put("money", 1000);params.put("balance", 2000);最终用户接管到的短信内容如下 尊敬的用户您好,您已胜利充值1000元,以后余额为2000元。————————————————版权申明:本文为CSDN博主「JasonYao」的原创文章,遵循CC 4.0 BY-SA版权协定,转载请附上原文出处链接及本申明。原文链接:https://blog.csdn.net/yaominh...

March 18, 2021 · 1 min · jiezi

关于api:聚合数据全国天气预报接口JAVA调用示例

step1:抉择本文所示例的接口"全国天气预报接口" url: https://www.juhe.cn/docs/api/id/39/aid/87step2:每个接口都须要传入一个参数key,相当于用户的令牌,所以第一步你须要申请一个keystep3:看文档!!!学过java的同学们都晓得,当咱们对一个类或者办法不明确其用意和思维时,咱们能够去查看文档,这里也不例外,而且对于英文不是特地好的同学来说很侥幸的是,聚合网站上的文档都是中文版本的,比起浏览java源码里的英文文档应该轻松很多.全国天气预报接口上面有六个子接口,关上第一个接口链接,看文档发现须要传入一个城市名或者城市ID参数,这个参数咱们能够通过第六个子接口获取(接口之间参数的调用相似于java中办法之间的调用),即反对城市列表获取.所以示例中咱们先调用这个接口.调用接口波及到申请网络资源的问题,这里我封装了一个工具类,蕴含GET和POST两种办法step4:上代码Demo1:网络拜访工具类(封装get和post办法) import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.net.HttpURLConnection;import java.net.URL;import java.util.Map;/** * 网络拜访工具类 * @author silk * */public class PureNetUtil { /** * get办法间接调用post办法 * @param url 网络地址 * @return 返回网络数据 */ public static String get(String url){ return post(url,null); } /** * 设定post办法获取网络资源,如果参数为null,实际上设定为get办法 * @param url 网络地址 * @param param 申请参数键值对 * @return 返回读取数据 */ public static String post(String url,Map param){ HttpURLConnection conn=null; try { URL u=new URL(url); conn=(HttpURLConnection) u.openConnection(); StringBuffer sb=null; if(param!=null){//如果申请参数不为空 sb=new StringBuffer(); /*A URL connection can be used for input and/or output. Set the DoOutput * flag to true if you intend to use the URL connection for output, * false if not. The default is false.*/ //默认为false,post办法须要写入参数,设定true conn.setDoOutput(true); //设定post办法,默认get conn.setRequestMethod("POST"); //取得输入流 OutputStream out=conn.getOutputStream(); //对输入流封装成高级输入流 BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(out)); //将参数封装成键值对的模式 for(Map.Entry s:param.entrySet()){ sb.append(s.getKey()).append("=").append(s.getValue()).append("&"); } //将参数通过输入流写入 writer.write(sb.deleteCharAt(sb.toString().length()-1).toString()); writer.close();//肯定要敞开,不然可能呈现参数不全的谬误 sb=null; } conn.connect();//建设连贯 sb=new StringBuffer(); //获取连贯状态码 int recode=conn.getResponseCode(); BufferedReader reader=null; if(recode==200){ //Returns an input stream that reads from this open connection //从连贯中获取输出流 InputStream in=conn.getInputStream(); //对输出流进行封装 reader=new BufferedReader(new InputStreamReader(in)); String str=null; sb=new StringBuffer(); //从输出流中读取数据 while((str=reader.readLine())!=null){ sb.append(str).append(System.getProperty("line.separator")); } //敞开输出流 reader.close(); if (sb.toString().length() == 0) { return null; } return sb.toString().substring(0, sb.toString().length() - System.getProperty("line.separator").length()); } } catch (Exception e) { e.printStackTrace(); return null; }finally{ if(conn!=null)//敞开连贯 conn.disconnect(); } return null; } }Demo2:调用获取城市列表接口示例 ...

March 16, 2021 · 3 min · jiezi

关于api:Java-聚合数据API接口调用城市天气预报

点击进入【数据聚合_数据接口调用_开发者数据API开放平台】(官网) 在pom文件中,退出依赖 <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.2.3</version> <classifier>jdk15</classifier> </dependency>SimpleWeather.java import java.io.*;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.nio.charset.StandardCharsets;import java.util.HashMap;import java.util.Map;public class SimpleWeather { // 天气情况查问接口地址 public static String API_URL = "http://apis.juhe.cn/simpleWeather/query"; // 接口申请Key public static String API_KEY = "108f91d439908e5d2da86cc8881dd3db"; public static void main(String[] args) { String cityName = "北京"; queryWeather(cityName); } /** * 依据城市名查问天气情况 * * @param cityName */ public static void queryWeather(String cityName) { Map<String, Object> params = new HashMap<>();//组合参数 params.put("city", cityName); params.put("key", API_KEY); String queryParams = urlencode(params); String response = doGet(API_URL, queryParams); try { JSONObject jsonObject = JSONObject.fromObject(response); int error_code = jsonObject.getInt("error_code"); if (error_code == 0) { System.out.println("调用接口胜利"); JSONObject result = jsonObject.getJSONObject("result"); JSONObject realtime = result.getJSONObject("realtime"); System.out.printf("城市:%s%n", result.getString("city")); System.out.printf("天气:%s%n", realtime.getString("info")); System.out.printf("温度:%s%n", realtime.getString("temperature")); System.out.printf("湿度:%s%n", realtime.getString("humidity")); System.out.printf("风向:%s%n", realtime.getString("direct")); System.out.printf("风力:%s%n", realtime.getString("power")); System.out.printf("空气质量:%s%n", realtime.getString("aqi")); } else { System.out.println("调用接口失败:" + jsonObject.getString("reason")); } } catch (Exception e) { e.printStackTrace(); } } /** * get形式的http申请 * * @param httpUrl 申请地址 * @return 返回后果 */ public static String doGet(String httpUrl, String queryParams) { HttpURLConnection connection = null; InputStream inputStream = null; BufferedReader bufferedReader = null; String result = null;// 返回后果字符串 try { // 创立近程url连贯对象 URL url = new URL(new StringBuffer(httpUrl).append("?").append(queryParams).toString()); // 通过近程url连贯对象关上一个连贯,强转成httpURLConnection类 connection = (HttpURLConnection) url.openConnection(); // 设置连贯形式:get connection.setRequestMethod("GET"); // 设置连贯主机服务器的超时工夫:15000毫秒 connection.setConnectTimeout(5000); // 设置读取近程返回的数据工夫:60000毫秒 connection.setReadTimeout(6000); // 发送申请 connection.connect(); // 通过connection连贯,获取输出流 if (connection.getResponseCode() == 200) { inputStream = connection.getInputStream(); // 封装输出流,并指定字符集 bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); // 存放数据 StringBuilder sbf = new StringBuilder(); String temp; while ((temp = bufferedReader.readLine()) != null) { sbf.append(temp); sbf.append(System.getProperty("line.separator")); } result = sbf.toString(); } } catch (IOException e) { e.printStackTrace(); } finally { // 敞开资源 if (null != bufferedReader) { try { bufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } } if (null != inputStream) { try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } if (connection != null) { connection.disconnect();// 敞开近程连贯 } } return result; } /** * 将map型转为申请参数型 * * @param data * @return */ public static String urlencode(Map<String, ?> data) { StringBuilder sb = new StringBuilder(); for (Map.Entry<String, ?> i : data.entrySet()) { try { sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue() + "", "UTF-8")).append("&"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } String result = sb.toString(); result = result.substring(0, result.lastIndexOf("&")); return result; }}启动程序,呈现如下成果 ...

March 16, 2021 · 2 min · jiezi

关于api:关于使用聚合数据接口实现快递查询功能

版权申明:本文为CSDN博主「船撞桥头」的原创文章,遵循CC 4.0 BY-SA版权协定,转载请附上原文出处链接及本申明。原文链接:https://blog.csdn.net/qq_3906... 1.先在聚合科技注册一个账号,而后收费申请应用这个接口,就能够失去一个调配给你的key2.点击集体核心->数据中心->我的接口->接口,就能够查看API文档、实例代码。3.点击集体核心->数据中心->我的接口->测试,在提醒的中央输出实在正确的库快递信息就能够查到物流信息。4.查问胜利后能够在该页面的申请详情中看到本人的key: 5.最初是依据给出的实例代码就能够在我的项目中应用了。这是我本人整合的一些重要参数: 还有一些快递公司的编号: 实例代码如下: (应用 net.sf.json.JSONObject包是须要导入一些jar包,不然会报错,这个在百度上搜寻会有一大堆的,就不放上来了。) import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.util.HashMap;import java.util.Map; import net.sf.json.JSONObject; public class Test { /***罕用快递调用示例代码 - 聚合数据*在线接口文档:http://www.juhe.cn/docs/43**/ public static final String DEF_CHATSET = "UTF-8"; public static final int DEF_CONN_TIMEOUT = 30000; public static final int DEF_READ_TIMEOUT = 30000; public static String userAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36"; //配置您申请的KEY public static final String APPKEY ="你申请的key"; //1.罕用快递查问API public static void getRequest1(){ String result =null; String url ="http://v.juhe.cn/exp/index";//申请接口地址 Map params = new HashMap();//申请参数 params.put("com","快递公司编号");//须要查问的快递公司编号 params.put("no","订单号");//须要查问的订单号 params.put("key",APPKEY);//利用APPKEY(利用具体页查问) params.put("dtype","json");//返回数据的格局,xml或json,默认json try { result =net(url, params, "GET"); JSONObject object = JSONObject.fromObject(result); if(object.getInt("error_code")==0){ System.out.println(object.get("result")); }else{ System.out.println(object.get("error_code")+":"+object.get("reason")); } } catch (Exception e) { e.printStackTrace(); } } //2.快递公司编号对照表 public static void getRequest2(){ String result =null; String url ="http://v.juhe.cn/exp/com";//申请接口地址 Map params = new HashMap();//申请参数 try { result =net(url, params, "GET"); JSONObject object = JSONObject.fromObject(result); if(object.getInt("error_code")==0){ System.out.println(object.get("result")); }else{ System.out.println(object.get("error_code")+":"+object.get("reason")); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { (new Test()).getRequest1(); (new Test()).getRequest2(); } /** * * @param strUrl 申请地址 * @param params 申请参数 * @param method 申请办法 * @return 网络申请字符串 * @throws Exception */ public static String net(String strUrl, Map params,String method) throws Exception { HttpURLConnection conn = null; BufferedReader reader = null; String rs = null; try { StringBuffer sb = new StringBuffer(); if(method==null || method.equals("GET")){ strUrl = strUrl+"?"+urlencode(params); } URL url = new URL(strUrl); conn = (HttpURLConnection) url.openConnection(); if(method==null || method.equals("GET")){ conn.setRequestMethod("GET"); }else{ conn.setRequestMethod("POST"); conn.setDoOutput(true); } conn.setRequestProperty("User-agent", userAgent); conn.setUseCaches(false); conn.setConnectTimeout(DEF_CONN_TIMEOUT); conn.setReadTimeout(DEF_READ_TIMEOUT); conn.setInstanceFollowRedirects(false); conn.connect(); if (params!= null && method.equals("POST")) { try { DataOutputStream out = new DataOutputStream(conn.getOutputStream()); out.writeBytes(urlencode(params)); } catch (Exception e) { // TODO: handle exception } } InputStream is = conn.getInputStream(); reader = new BufferedReader(new InputStreamReader(is, DEF_CHATSET)); String strRead = null; while ((strRead = reader.readLine()) != null) { sb.append(strRead); } rs = sb.toString(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { reader.close(); } if (conn != null) { conn.disconnect(); } } return rs; } //将map型转为申请参数型 public static String urlencode(Map<String,Object>data) { StringBuilder sb = new StringBuilder(); for (Map.Entry i : data.entrySet()) { try { sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"","UTF-8")).append("&"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } return sb.toString(); }} ...

March 16, 2021 · 2 min · jiezi

关于api:使用聚合数据-API-实现-Windows-日历天气程序

应用聚合数据 API(申请链接 https://www.juhe.cn/docs/api/id/73) 实现 Windows 日历天气程序,具体展示如下: 今日天气 将来七日天气 当年全副假期 最近的假期 calendar_weather.py import json from urllib import request def get_supported_citys(): #反对城市列表 url = "http://v.juhe.cn/weather/citys?key=key" with request.urlopen(url) as f: allData = f.read().decode("utf-8") dataMap = json.loads(allData) if dataMap["error_code"] == 0: file_name = "supported_citys.txt" for root, dirs, files in os.walk("."): if file_name in files: os.remove(os.path.join(root, file_name)) ret = dataMap["result"] for data in ret: with open(file_name, "a") as f: s = "%s %s %s %s" %(data["province"], data["city"], data["district"], data["id"]) f.write(s + "\r\n") def get_weather_by_name_or_id(city_id): #依据城市名/id查问天气 url = "http://v.juhe.cn/weather/index?cityname=" + city_id + "&dtype=json&format=2&key=key" with request.urlopen(url) as f: allData = f.read().decode("utf-8") dataMap = json.loads(allData) if dataMap["error_code"] == 0: ret = dataMap["result"] sk = ret["sk"] today = ret["today"] future = ret["future"] ret_lst = [] ret_lst.append(sk["wind_strength"]) ret_lst.append(sk["time"]) ret_lst.append(today["date_y"]) ret_lst.append(today["week"]) ret_lst.append(today["city"]) ret_lst.append(today["weather"]) ret_lst.append(today["temperature"]) ret_lst.append(today["wind"]) for data in future: ret_lst.append(data["date"]) ret_lst.append(data["week"]) ret_lst.append(data["weather"]) ret_lst.append(data["temperature"]) ret_lst.append(data["wind"]) return ret_lst def get_today_calendar(date): #获取当天的详细信息 url = "http://v.juhe.cn/calendar/day?date=" + date + "&key=key" with request.urlopen(url) as f: allData = f.read().decode("utf-8") dataMap = json.loads(allData) if dataMap["error_code"] == 0: ret = dataMap["result"]["data"]; ret_lst = [] ret_lst.append(ret["date"]) ret_lst.append(ret["weekday"]) ret_lst.append(ret["animalsYear"]) ret_lst.append(ret["lunarYear"]) ret_lst.append(ret["lunar"]) ret_lst.append(ret["suit"]) ret_lst.append(ret["avoid"]) return ret_lst def get_this_year_holiday(year): #获取当年的假期列表 url = "http://v.juhe.cn/calendar/year?year=" + year + "&key=key" with request.urlopen(url) as f: allData = f.read().decode("utf-8") dataMap = json.loads(allData) if dataMap["error_code"] == 0: ret = json.loads(dataMap["result"]["data"]["holidaylist"]) ret_lst = [] for data in ret: ret_lst.append("%s %s" %(data["name"], data["startday"])) return ret_lst def get_latest_holiday(year_month): #获取近期假期 url = "http://v.juhe.cn/calendar/month?year-month=" + year_month + "&key=key" with request.urlopen(url) as f: allData = f.read().decode("utf-8") dataMap = json.loads(allData) if dataMap["error_code"] == 0: ret = dataMap["result"]["data"] ret = json.loads(ret["holiday"]) ret_lst = [] for data in ret: ret_lst.append(data["festival"]) ret_lst.append(data["name"]) ret_lst.append(data["desc"]) ret_lst.append("%s" %(data["list#num#"])) for detail in data["list"]: if detail["status"] == "1": ret_lst.append("%s %s" %(detail["date"], "休")) elif detail["status"] == "2": ret_lst.append("%s %s" %(detail["date"], "班")) return ret_lstmainwindow.cpp ...

March 16, 2021 · 6 min · jiezi

关于华为:华为API战略规范组织和流程驱动企业大循环

摘要:构建一套欠缺的API标准流程体系变得至关重要,用方法论驱动整个API改革,用API改革驱动共享经济模式,以共享模式反推数字化转型。本文分享自华为云社区《API策略--华为在数字化浪潮下的API改革实际》 作者: 吴建林 概述去年的疫情减速了以后企业数字化转型的过程,在数字化浪潮一直的冲击下,企业转型跟改革的实质变得至关重要,体现优异的企业正在减速数字化翻新并通过新兴技术利用新冠疫情无利的一面使本人变得更弱小。此次疫情被认为是2020年最重大的“转折”。2021年将是一场数字化比赛【The 2021 CIO Agenda: Seize This Opportunity for Digital Business Acceleration】,梳理数字化转型案例的文章曾经不足为奇,各有论据,但实际上其本质更多的是在于数字化浪潮下的共享经济,从近几年的趋势能够看得出来,现有的很多市场商业模式,在数字化浪潮下逐渐的转变成了共享模式以租代买,例如:共享自行车、充电宝、云服务也是其中的一种,原有的烟囱式体系曾经开始逐渐被淘汰,如何疾速把握共享经济治理的外围成为数字化转型的要害。 回忆一下近几年IT共享模式的核心内容,根本都脱离不开API,例如:数据凋谢,企业能力,人工智能等都在通过API进行共享,将来几年API将会继续笼罩,并成为企业链接的外围介质。据IDC 2019 CIO议程预测,到2021年,在业务需要的驱动下,70%的CIO将通过API和体系架构为企业打造麻利链接,因而构建一套欠缺的API标准流程体系变得至关重要,用方法论驱动整个API改革,用API改革驱动共享经济模式,以共享模式反推数字化转型。 为什么要启动API策略Put APIs at the Center of Your Digital Business Platform ---Gartner 随同数据化转型,华为的API流程改革曾经继续有10年之久,10年之前便开始布局API策略,数据对于企业诚然重要,然而对应的数据要产生价值,必定会产生继续的共享跟服务治理,因而一套残缺的流程体系至关重要,Gartner也屡次提到以API作为数字化转型的外围,驱动企业能力共享变现。Gartner预测:API作为资产经营,到2024年整个全生命周期的API治理市场将达到62亿美元。存在微小的市场空间。 其实国外很早以前就曾经开始布局API策略,而且成熟度当初也远超国内,2016年Google抗住压力以6.5亿美金的价格收买继续亏损的Apigee,过后的大家还很纳闷,直到现在APIGEE成为整个魔力象限领导者当前大家才分明起因。2018年,Salesforce更是以高达65亿美元的价格买下MuleSoft,足见对于API策略的布局在寰球跟各大厂商的器重水平。 华为10年历史,缘何演进 在一个简单的案例中,咱们会遇到多大的挑战?一个企业业务一旦倒退到肯定阶段,外部的业务零碎跟内部交互或者外部相互共享的复杂度就会急剧回升,华为外部曾经有几十万以上的API凋谢,并放弃较高的持续增长,当然从10年前就开始面临着很多问题: API太多,部门各自为政,传输协定、标准不对立,接入老本太高不同部门的API标准均不统一,应用方调用适配工作量大。 企业能力API化,API故障带来老本高,品质防护成了外围业务之间的集成都是通过API实现,API成为企业的外围,品质是最重要的内容。 服务间调用跟部门单干没有较好的API调用体验服务间调用短少对立的平台,好的API须要一直的经营跟重视调用体验。 没有对立的API治理,API日落变更成为现网事变次要根因理论统计80%以上的API故障都是因为API变更问题导致 API数量成指数增长,类似业务一直耗费团队战斗力部门各自倒退,类似的API也层出不穷,反复造轮子造成较大的人力耗费 寰球8大数据中心业务,API应用跟网络穿透存在挑战寰球8大数据中心,API的拜访,调用都存在较大的网络挑战。 以流程、标准、组织驱动企业大循环数字化转型的五转实践,转意识、转组织、转文化、转办法和转模式,很多水平上带来研发作业模式的重构。要真正实现这五转实践的施行,须要从流程、标准和组织三个层面驱动,并在企业外部实现大循环。用标准提供短缺的方法论撑持,用流程晋升整体施行效率, 用组织激活产品跟标准的一直迭代。 所以华为在制订API策略过程中就是以这三者为核心内容进行构建,依照组织,角色等不同划分,构筑全栈的API全生命周期治理标准流程体系。API的全生命周期蕴含了设计、实现、 治理、生产和剖析5大流程。资产从Swagger文档,后端能力,API服务,API产品,在流程中轮转,并一直演进。 用户的角色在每个企业中都会有不同,所以整体形象进去四个角色:设计者、开发者、管理者、消费者,每个角色所负责的流程跟审批的标准都会有所差别,以华为的角色作为剖析如下: 标准为何重要?举一个很小的案例:API兼容标准,在华为外部有严格的兼容标准要求,改任意一个接口的字段都是须要通过层层审批,例如:原来有个API对外开放的工夫字段为:2020-09-01T18:50:20.200Z(毫秒精度),起初因为后盾改了一下格局变成了2020-09-01T18:50:20Z(秒精度),尽管只是一个小的改变,然而因为客户端未辨认跟判断对应的工夫精度导致X万台设施终端间接异样,全网事变。这种案例亘古未有,为何说API标准中的Header不能辨别大小写,为什么不倡议用下划线, 每一个标准点都是一个血的教训积攒。华为外部10年的积攒了至多有100+的API全流程标准内容。从设计、开发、运行、运维、测试等多个维度,且还继续一直的优化。 API的全生命周期标准其实在肯定水平上能映射一个企业的规模跟外部的组织治理计划, 没有一个欠缺的标准跟流程撑持,企业在倒退到中级阶段当前就会遇到各种瓶颈跟挑战, 华为也是从10年的泥潭里爬出来的。 怎么用一个产品来改革组织?一个好的产品往往都是随同着一套欠缺的方法论撑持的,API策略中最外围的就是其中的流程跟标准治理,大部分企业的想法都是要转型要改革先变组织,再通过组织的改革再来寻找适合的工具跟产品。然而我集体感觉只有有一套好的方法论撑持,一个产品就能够为一个企业带来质的改革,产品中是有角色划分有流程标准撑持的,通过一个产品的外在方法论能够疾速的把组织跟外部的构造梳理分明,用逆向思维的形式达到组织上的改革。数据关闭是没有前途的,然而数据共享肯定要有序的融入到流程跟标准当中。 理解详情欢送应用: https://console.huaweicloud.com/romaapi/ 点击关注,第一工夫理解华为云陈腐技术~

March 16, 2021 · 1 min · jiezi

关于分布式:解析分布式应用框架Ray架构源码

摘要:Ray的定位是分布式应用框架,次要指标是使能分布式应用的开发和运行。Ray是UC Berkeley大学 RISE lab(前AMP lab) 2017年12月 开源的新一代分布式应用框架(刚公布的时候定位是高性能分布式计算框架,20年中批改定位为分布式应用框架),通过一套引擎解决简单场景问题,通过动静计算及状态共享提高效率,实现研发、运行时、容灾一体化 Ray架构解析业务指标Ray的定位是分布式应用框架,次要指标是使能分布式应用的开发和运行。 业务场景具体的粗粒度应用场景包含 弹性负载,比方Serverless Computing机器学习训练,Ray Tune, RLlib, RaySGD提供的训练能力在线服务, 例如Ray Server提供在线学习的案例数据处理, 例如Modin, Dask-On-Ray, MARS-on-Ray长期计算(例如,并行化Python应用程序,将不同的分布式框架粘合在一起)Ray的API让开发者能够轻松的在单个分布式应用中组合多个libraries,例如,Ray的tasks和Actors可能会call into 或called from在Ray上运行的分布式训练(e.g. torch.distributed)或者在线服务负载; 在这种场景下,Ray是作为一个“分布式胶水”零碎,因为它提供通用API接口并且性能足以撑持许多不同工作负载类型。零碎设计指标Ray架构设计的外围准则是API的简略性和通用性Ray的零碎的外围指标是性能(低开销和程度可伸缩性)和可靠性。为了达成外围指标,设计过程中须要就义一些其余现实的指标,例如简化的零碎架构。例如,Ray应用了分布式参考计数和分布式内存之类的组件,这些组件减少了体系结构的复杂性,然而对于性能和可靠性而言却是必须的。为了进步性能,Ray建设在gRPC之上,并且在许多状况下能够达到或超过gRPC的原始性能。与独自应用gRPC相比,Ray使应用程序更容易利用并行和分布式执行以及分布式内存共享(通过共享内存对象存储)。为了进步可靠性,Ray的外部协定旨在确保产生故障时的正确性,同时又缩小了常见状况的开销。 Ray施行了分布式参考计数协定以确保内存平安,并提供了各种从故障中复原的选项。因为Ray应用形象资源而不是机器来示意计算能力,因而Ray应用程序能够无缝的从便携机环境扩大到群集,而无需更改任何代码。 Ray通过分布式溢出调度程序和对象管理器实现了无缝扩大,而开销却很低。相干零碎上下文集群管理系统:Ray能够在Kubernetes或SLURM之类的集群管理系统之上运行,以提供更轻量的task和Actor而不是容器和服务。并行框架:与Python并行化框架(例如multiprocessing或Celery)相比,Ray提供了更通用,更高性能的API。 Ray零碎还明确反对内存共享。数据处理框架: 与Spark,Flink,MARS或Dask等数据处理框架相比,Ray提供了一个low-level且较简化的API。这使API更加灵便,更适宜作为“分布式胶水”框架。另一方面,Ray对数据模式,关系表或流数据流没有外在的反对。仅通过库(例如Modin,Dask-on-Ray,MARS-on-Ray)提供此类性能。Actor框架:与诸如Erlang和Akka之类的专用actor框架不同,Ray与现有的编程语言集成,从而反对跨语言操作和语言本机库的应用。 Ray零碎还通明地治理无状态计算的并行性,并明确反对参与者之间的内存共享。HPC零碎:HPC零碎都反对MPI消息传递接口,MPI是比task和actor更底层的接口。这能够使应用程序具备更大的灵活性,然而开发的复杂度加大了很多。这些零碎和库中的许多(例如NCCL,MPI)也提供了优化的个体通信原语(例如allreduce)。 Ray应用程序能够通过初始化各组Ray Actor之间的通信组来利用此类原语(例如,就像RaySGD的torch distributed)。零碎设计逻辑架构: 畛域模型Task:在与调用者不同的过程上执行的单个函数调用。工作能够是无状态的(@ ray.remote函数)或有状态的(@ ray.remote类的办法-请参见上面的Actor)。工作与调用者异步执行:.remote()调用立刻返回一个ObjectRef,可用于检索返回值。Object:应用程序值。这能够由工作返回,也能够通过ray.put创立。对象是不可变的:创立后就无奈批改。工人能够应用ObjectRef援用对象。Actor:有状态的工作过程(@ ray.remote类的实例)。 Actor工作必须应用句柄或对Actor的特定实例的Python援用来提交。Driver: 程序根目录。这是运行ray.init()的代码。Job:源自同一驱动程序的(递归)工作,对象和参与者的汇合集群设计 如上图所示,Ray集群包含一组同类的worker节点和一个集中的全局管制存储(GCS)实例。局部零碎元数据由GCS治理,GCS是基于可插拔数据存储的服务,这些元数据也由worker本地缓存,例如Actor的地址。 GCS治理的元数据拜访频率较低,但可能被群集中的大多数或所有worker应用,例如,群集的以后节点成员身份。这是为了确保GCS性能对于应用程序性能影响不大。 Ownership 大部分零碎元数据是依据去中心化理念(ownership)进行治理的:每个工作过程都治理和领有它提交的工作以及这些工作返回的“ ObjectRef”。Owner负责确保工作的执行并促成将ObjectRef解析为其根底值。相似地,worker领有通过“ ray.put”调用创立的任何对象。OwnerShip的设计具备以下长处(与Ray版本<0.8中应用的更集中的设计相比):低工作提早(〜1 RTT,<200us)。常常拜访的零碎元数据对于必须对其进行更新的过程而言是本地的。高吞吐量(每个客户端约10k工作/秒;线性扩大到集群中数百万个工作/秒),因为零碎元数据通过嵌套的近程函数调用天然散布在多个worker过程中。简化的架构。owner集中了平安垃圾收集对象和零碎元数据所需的逻辑。进步了可靠性。能够依据应用程序构造将工作程序故障彼此隔离,例如,一个近程调用的故障不会影响另一个。OwnerShip附带的一些衡量取舍是:要解析“ ObjectRef”,对象的owner必须是可及的。这意味着对象必须与其owner绑定。无关对象复原和持久性的更多信息,请参见object故障和object溢出。目前无奈转让ownership。外围组件 Ray实例由一个或多个工作节点组成,每个工作节点由以下物理过程组成:一个或多个工作过程,负责工作的提交和执行。工作过程要么是无状态的(能够执行任何@ray.remote函数),要么是Actor(只能依据其@ray.remote类执行办法)。每个worker过程都与特定的作业关联。初始工作线程的默认数量等于计算机上的CPU数量。每个worker存储ownership表和小对象:a. Ownership 表。工作线程具备援用的对象的零碎元数据,例如,用于存储援用计数。b. in-process store,用于存储小对象。Raylet。raylet在同一群集上的所有作业之间共享。raylet有两个主线程:a. 调度器。负责资源管理和满足存储在分布式对象存储中的工作参数。群集中的单个调度程序包含Ray散布式调度程序。b. 共享内存对象存储(也称为Plasma Object Store)。负责存储和传输大型对象。集群中的单个对象存储包含Ray分布式对象存储。每个工作过程和raylet都被调配了一个惟一的20字节标识符以及一个IP地址和端口。雷同的地址和端口能够被后续组件重用(例如,如果以前的工作过程死亡),但惟一ID永远不会被重用(即,它们在过程死亡时被标记为墓碑)。工作过程与其本地raylet过程共享命运。 其中一个工作节点被指定为Head节点。除了上述过程外,Head节点还托管:全局管制存储(GCS)。GCS是一个键值服务器,蕴含零碎级元数据,如对象和参与者的地位。GCS目前还不反对高可用,后续版本中GCS能够在任何和多个节点上运行,而不是指定的头节点上运行。Driver过程(es)。Driver是一个非凡的工作过程,它执行顶级应用程序(例如,Python中的__main__)。它能够提交工作,但不能执行任何工作自身。Driver过程能够在任何节点上运行。交互设计利用的Driver能够通过以下形式之一连贯到Ray: 调用`ray.init()’,没有参数。这将启动一个嵌入式单节点Ray实例,利用能够立刻应用该实例。通过指定ray.init(地址=<GCS addr>)连贯到现有的Ray集群。在后端,Driver将以指定的地址连贯到GCS,并查找群集其余组件的地址,例如其本地raylet地址。Driver必须与Ray群集的现有节点之一合部。这是因为Ray的共享内存性能,所以合部是必要的前提。应用Ray客户端`ray.util.connect()'从近程计算机(例如笔记本电脑)连贯。默认状况下,每个Ray群集都会在能够接管近程客户端连贯的头节点上启动一个Ray Client Server,用来接管近程client连贯。然而因为网络提早,间接从客户端运行的某些操作可能会更慢。Runtime所有Ray外围组件都是用C++实现的。Ray通过一个名为“core worker”的通用嵌入式C++库反对Python和Java。此库实现ownership表、过程内存储,并治理与其余工作器和Raylet的gRPC通信。因为库是用C++实现的,所有语言运行时都共享Ray工作协定的通用高性能实现。 Task的lifetimeOwner负责确保提交的Task的执行,并促成将返回的ObjectRef解析为其根底值。如下图,提交Task的过程被视为后果的Owner,并负责从raylet获取资源以执行Task,Driver领有A的后果,Worker 1领有B的后果。 提交Task时,Owner会期待所有依赖项就绪,即作为参数传递给Task的ObjectRefs(请参见Object的lifetime)变得可用。依赖项不须要是本地的;Owner一旦认为依赖项在群集中的任何中央可用,就会立刻就绪。当依赖关系就绪时,Owner从散布式调度程序申请资源以执行工作,一旦资源可用,调度程序就会授予申请,并应用调配给owner的worker的地址进行响应。Owner将task spec通过gRPC发送给租用的worker来调度工作。执行工作后,worker必须存储返回值。如果返回值较小,则工作线程将值间接inline返回给Owner,Owner将其复制到其过程中对象存储区。如果返回值很大,则worker将对象存储在其本地共享内存存储中,并向所有者返回分布式内存中的ref。让owner能够援用对象,不用将对象提取到其本地节点。当Task以ObjectRef作为其参数提交时,必须在worker开始执行之前解析对象值。如果该值较小,则它将间接从所有者的过程中对象存储复制到任务说明中,在任务说明中,执行worker线程能够援用它。如果该值较大,则必须从分布式内存中提取对象,以便worker在其本地共享内存存储中具备正本。scheduler通过查找对象的地位并从其余节点申请副原本协调此对象传输。容错:工作可能会以谬误完结。Ray辨别了两种类型的工作谬误:应用程序级。这是工作过程处于活动状态,但工作以谬误完结的任何场景。例如,在Python中抛出IndexError的工作。零碎级。这是工作过程意外死亡的任何场景。例如,隔离故障的过程,或者如果工作程序的本地raylet死亡。因为应用程序级谬误而失败的工作永远不会重试。异样被捕捉并存储为工作的返回值。因为零碎级谬误而失败的工作能够主动重试到指定的尝试次数。代码参考:src/ray/core_worker/core_worker.ccsrc/ray/common/task/task_spec.hsrc/ray/core_worker/transport/direct_task_transport.ccsrc/ray/core_worker/transport/依赖关系_解析器.ccsrc/ray/core_worker/task_manager.ccsrc/ray/protobuf/common.protoObject的lifetime下图Ray中的分布式内存治理。worker能够创立和获取对象。owner负责确定对象何时平安开释。 对象的owner就是通过提交创立task或调用ray.put创立初始ObjectRef的worker。owner治理对象的生存期。Ray保障,如果owner是活的,对象最终可能会被解析为其值(或者在worker失败的状况下引发谬误)。如果owner已死亡,则获取对象值的尝试永远不会hang,但可能会引发异样,即便对象仍有物理正本。每个worker存储其领有的对象的援用计数。无关如何跟踪援用的详细信息,请参阅援用计数。Reference仅在上面两种操作期间计算:1.将ObjectRef或蕴含ObjectRef的对象作为参数传递给Task。2.从Task中返回ObjectRef或蕴含ObjectRef的对象。对象能够存储在owner的过程内内存存储中,也能够存储在分布式对象存储中。此决定旨在缩小每个对象的内存占用空间和解析工夫。当没有故障时,owner保障,只有对象仍在作用域中(非零援用计数),对象的至多一个正本最终将可用。。有两种办法能够将ObjectRef解析为其值:1.在ObjectRef上调用ray.get。2.将ObjectRef作为参数传递给工作。执行工作程序将解析ObjectRefs,并将工作参数替换为解析的值。当对象较小时,能够通过间接从owner的过程内存储中检索它来解析。大对象存储在分布式对象存储中,必须应用分布式协定解析。当没有故障时,解析将保障最终胜利(但可能会引发应用程序级异样,例如worker segfault)。如果存在故障,解析可能会引发零碎级异样,但永远不会挂起。如果对象存储在分布式内存中,并且对象的所有正本都因raylet故障而失落,则该对象可能会失败。Ray还提供了一个选项,能够通过重建主动复原此类失落的对象。如果对象的所有者过程死亡,对象也可能失败。代码参考:src/ray/core_worker/store_Provider/memory_store/memory_store.ccsrc/ray/core_worker/store_Provider/plasma_store_provider.ccsrc/ray/core_worker/reference_count.ccsrc/ray/object_manager/object_manager.ccActor的lifetimeActor的lifetimes和metadata (如IP和端口)是由GCS service治理的.每一个Actor的Client都会在本地缓存metadata,应用metadata通过gRPC将task发送给Actor. ...

March 15, 2021 · 1 min · jiezi

关于小程序:小程序实现接口请求

1.接口资源1)通常能够找收费的接口资源进行开发测试调用,例如" 聚合接口 "网站:www.juhe.cn 2)注册登录后,抉择收费的接口进行应用例如:天气查问接口该接口中会阐明接口地址、必须填写的申请参数、接口的key值 2.实现接口调用1)在app.json 中创立页面,例如图示 “pages/request/request”2)在该页面门路下的 request.js中创立http申请,创立步骤如下 data中申明数据对象weather生命周期函数onLoad中调用wx.request的Api留神:wx.request中要填写以下参数: url:申请的接口地址data:申请的参数,通常填写必填的参数,此示例中的接口,必填参数为city 和 keysuccess:申请胜利执行的回调函数,此处能够进行数据绑定this.setDatafail:申请失败执行的回调函数// pages/request/request.jsPage({/*** 页面的初始数据*/data: {weather:{}}, /** * 生命周期函数--监听页面加载 */onLoad: function (options) {var that = this;//因为this在函数外部指向变动,所以须要将全局this指向保留到that中wx.request({ //留神:理论开发过程中只反对https申请,且须要去小程序后盾配置 //此处能够通过配置调试工具批改,实现反对http申请,操作过程:批改详情--本地设置--不校验非法域名 //详见课程《微信小程序零根底到我的项目实战》课时50 url: 'http://apis.juhe.cn/simpleWeather/query',//填写接口网站提供的接口地址 data:{ city:"广州", key:"0686200865ff5089fa8bd2d642e4dbd9" }, success(res){ console.log(res.data.result.realtime);//申请胜利后,获取实时天气情况 that.setData({ weather:res.data.result.realtime }); }, fail(){ console.log("申请失败!"); }});}})3.数据渲染在request.wxml中进行数据渲染(数据绑定),代码如下 <view> <view class="city">实时气温{{weather.temperature}}℃</view> <view class="weather"></view></view>接口调用后,数据渲染最终后果如下: 版权申明:本文为CSDN博主「weixin_45963440」的原创文章,遵循CC 4.0 BY-SA版权协定,转载请附上原文出处链接及本申明。原文链接:https://blog.csdn.net/weixin_...

March 12, 2021 · 1 min · jiezi

关于api:基于Python的免费天气预报接口查询

本文转自SDK社区:sdk.cn 一、开明接口 天气预报接口服务应用的聚合数据提供的收费接口,每天能够100次收费调用。能够通过https://www.juhe.cn/docs/api/id/73注册及开明。 二、Python2.x调用示例 #!/usr/bin/python# -*- coding: utf-8 -*-import urllib, urllib2, sys, jsonreload(sys)sys.setdefaultencoding('utf-8')url = 'http://apis.juhe.cn/simpleWeather/query'params = {"city": "北京", # 查问天气的城市名称,如:北京、苏州、上海"key": "xxxxxxxx", # 您申请的接口API接口申请Key}querys = urllib.urlencode(params)request = urllib2.Request(url, data=querys)response = urllib2.urlopen(request)content = response.read()if (content):try: result = json.loads(content) error_code = result['error_code'] if (error_code == 0): temperature = result['result']['realtime']['temperature'] humidity = result['result']['realtime']['humidity'] info = result['result']['realtime']['info'] wid = result['result']['realtime']['wid'] direct = result['result']['realtime']['direct'] power = result['result']['realtime']['power'] aqi = result['result']['realtime']['aqi'] print("温度:%s\n湿度:%s\n天气:%s\n天气标识:%s\n风向:%s\n风力:%s\n空气质量:%s" % (temperature, humidity, info, wid, direct, power, aqi)) else: print("申请失败:%s %s" % (result['error_code'], result['reason']))except Exception as e: print("解析后果异样:%s" % e)else:# 可能网络异样等问题,无奈获取返回内容,申请异样print("申请异样")三、Python3.x调用示例 ...

March 12, 2021 · 1 min · jiezi

关于api:基于PHP的快递查询接口查询

一、接口申请 通过聚合https://www.juhe.cn/docs/api/id/43自助申请开明接口权限。 二、通过PHP发动快递查问 class JuheExpress{private $apiKey = '**************'; // 在聚合申请到的快递查问接口申请Keyprivate $apiHost = 'https://v.juhe.cn/exp';/** * 获取反对的快递公司及编号 */public function getCompanys(){ // 组装申请残缺URL $requestApiUrl = $this->apiHost . '/com?key=' . $this->apiKey; // 发动网络申请聚合 $requestResponseContent = $this->juheHttpRequest($requestApiUrl); // 解析后果 $requestResult = json_decode($requestResponseContent, true); if (!$requestResult) { // 申请异样,可能网络异样等起因,依据本身逻辑批改 echo "申请异样"; return false; } else { $requestStatusCode = $requestResult['error_code']; if ($requestStatusCode === 0) { // 申请胜利,依据本身逻辑批改 $companys = $requestResult['result']; return $companys; } else { // 申请失败,依据本身逻辑批改 echo $requestResult['error_code'] . ':' . $requestResult['reason']; return false; } }}/** * 依据快递公司编号和快递单号查问快递状态 */public function getResult(){ $apiUrl = $this->apiHost . '/index'; $requestParams = [ 'key' => $this->apiKey, 'com' => 'yd', // 须要查问的快递公司编号 'no' => '4312453259458', // 须要查问的快递单号 'senderPhone' => '', 'receiverPhone' => '' ]; // 发动网络申请聚合 $requestResponseContent = $this->juheHttpRequest($apiUrl, $requestParams, 1); // 解析后果 $requestResult = json_decode($requestResponseContent, true); if (!$requestResult) { // 申请异样,可能网络异样等起因,依据本身逻辑批改 echo "申请异样"; return false; } else { $requestStatusCode = $requestResult['error_code']; if ($requestStatusCode === 0) { // 申请胜利,依据本身逻辑批改 $companys = $requestResult['result']; return $companys; } else { // 申请失败,依据本身逻辑批改 echo $requestResult['error_code'] . ':' . $requestResult['reason']; return false; } }}/** * 发动网络申请函数 * @param $url 申请的URL * @param bool $params 申请的参数内容 * @param int $ispost 是否POST申请 * @return bool|string 返回内容 */private function juheHttpRequest($url, $params = false, $ispost = 0){ // $httpInfo = array(); $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36'); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_TIMEOUT, 12); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); if ($ispost) { curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); curl_setopt($ch, CURLOPT_URL, $url); } else { if ($params) { if (is_array($params)) { curl_setopt($ch, CURLOPT_URL, $url . '?' . http_build_query($params)); } else { curl_setopt($ch, CURLOPT_URL, $url . '?' . $params); } } else { curl_setopt($ch, CURLOPT_URL, $url); } } $response = curl_exec($ch); if ($response === false) { // echo "cURL Error: ".curl_error($ch); return false; } // $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); // $httpInfo = array_merge($httpInfo, curl_getinfo($ch)); curl_close($ch); return $response;}}/*** 聚合罕用快递API发动申请-PHP代码* 性能:反对大多数快递公司快递单号查问*/$juheExpress = new JuheExpress();$companys = $juheExpress->getCompanys();print_r($companys);$results = $juheExpress->getResult();print_r($results);

March 12, 2021 · 2 min · jiezi

关于api:自动化测试系列二API测试

在上次的自动化测试系列(一)中为大家大体介绍了自动化测试的概念,本文次要针对API测试的概念及API测试在Choerodon猪齿鱼中的实际开展。 API(应用程序编程接口)测试是一种软件测试,能够间接在API级别执行验证。它是集成测试的一部分,它确定API是否满足测试人员对性能,可靠性,性能和安全性的冀望。与UI测试不同,API测试是在没有GUI的音讯层执行的。 什么是API测试接口(API)是各种零碎性能的根底,一旦接口呈现问题可能会引起许多零碎性能的问题并且不容易定位。而接口测试则帮忙节俭了测试老本,促成了测试前移。如图所示,在软件的自动化测试金字塔中,越是底层的测试,越是可能提前发现Bug,而在底层发现的这些Bug造成的影响往往也会更大。所以,咱们提倡测试前移,也就是说,在金字塔中层级越低,占的比重应该更大。(然而在理论工作中,单元测试对技术专业性要求更高,很多状况下都是由开发来施行,因而咱们能够先抉择接口测试来更早地染指测试。) 其次,接口测试相较于传统的功能测试,接口测试可能更好地解决零碎测试的复杂度问题,同时防止了UI层可能不稳固的问题,以此来进步测试人员的工作效率。 通过将API测试工作集成至利用流水线,Choerodon平台实现了接口测试的自动化。 怎么应用Choerodon API测试性能?本次旨在为大家介绍在Choerodon猪齿鱼 V0.24.0商业版中API测试相干的性能。 API测试用例治理Choerodon中的接口测试模块通过集成Jmeter,实现了API用例的增加、归集、治理与执行的性能。其中反对基于接口URL或Swagger文档疾速编排接口测试用例,而导入或增加API测试用例的整个过程免代码编写,技术门槛低,适宜麻利团队中各个角色应用。 创立API测试用例API测试用例次要由4个局部组成,别离是:用例的根底信息、前置步骤、申请脚本以及断言。 前置步骤用于为执行用例申请做前置筹备,分为:前置申请、生成随机数据、前置期待3种类型。申请脚本中蕴含了:抉择申请形式、保护URL、保护申请头、申请参数或申请体,同时还能从对应的响应后果中提取出变量供后续的用例援用。断言用于对用例执行后的响应后果做判断,判断申请执行后的响应后果是否满足咱们的预期。若满足,则称之为:通过断言;不满足,则为:不满足断言;导入API测试用例导入用例的性能反对将已有的接口及其相干信息批量疾速地导入到用例库中,并主动生成符合规范的API测试用例。目前反对Swagger导入用例与cURL导入用例形式。 Swagger导入用例反对输出Swagger URL从Swagger中批量导入API测试文档中曾经保护的接口信息。 cURL导入用例反对从浏览器(如chrome、safari)中复制申请为cURL格局,并将其粘贴进图中的命令行中即可。 执行API测试用例 执行API测试用例时,需抉择API测试用例,并反对抉择API测试工作-工作配置页面曾经保护好的工作配置,同时反对在此基础上进行批改,或者间接输出各项配置。 执行配置中设置的参数反对用于此次执行的所有用例,防止反复屡次的保护雷同的用例信息。API测试工作API测试工作是某些特定用例的汇合(这里能够是产品的某个版本中的API测试用例,或者是其中某个功能块的API测试用例的汇合);从API测试用例库中抉择用例创立API测试工作胜利后,便能以API测试工作为整体来执行该工作。此外,利用流水线中也集成了API测试工作,从而实现了API测试的自动化执行。 创立API测试工作创立API测试工作时,需抉择API测试用例,作为API测试工作中执行的对象。反对抉择API测试工作-工作配置页面曾经保护好的工作配置,同时反对在此基础上进行批改,或者间接输出各项配置作为此工作的通用配置。 工作配置中设置的参数反对用于API测试工作中执行的用例,防止反复屡次的保护雷同的用例信息。API测试工作记录API测试工作菜单下,可查看所有API测试工作的执行记录,除此之外,还反对查看间接通过执行用例而产生的用例执行的记录。 测试记录中蕴含了两局部,别离是:执行概览与执行后果详情; 1. 执行概览:其中包含记录的编号、执行后果、执行者、开始工夫、执行耗时、用例通过率、执行胜利的用例数、执行失败的用例数。2. 执行后果详情:即每个用例的执行详情查看;其中包含:用例申请的根本信息(申请形式、URL)、用例执行状态、开始工夫、执行耗时、断言的通过状况、申请头、申请体、状态码、响应头以及响应体。 工作配置管理工作配置用于为执行用例或执行API测试工作提供根底的配置,其中包含:全局申请头配置、全局申请配置、受权治理配置以及用户变量配置,以此来防止在多个用例中频繁反复地配置这些参数。 流水线中集成API测试工作流水线中API测试工作目前仅反对Choerodon商业版能抉择。当API测试工作触发后,会立即执行选中的测试工作。 留神:该类型的CD工作仅Choerodon商业版可用。抉择增加此类型工作后,首先须要填写工作名称、配置触发分支;触发分支的匹配形式反对:分支类型匹配、正则匹配、准确匹配以及准确排除。抉择API测试工作:此处仅反对抉择我的项目下已有的API测试工作。总结继续测试是DevOps流程中重要的一环,而API测试能帮忙实现测试前移,从而帮忙团队升高测试老本,更快地发现缺点与问题。 对于猪齿鱼Choerodon猪齿鱼作为开源全价值链多云麻利合作平台,是基于开源技术的Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境的一致性。平台通过提供精益麻利,继续交付,容器环境,微服务,DevOps等能力来帮忙组织团队来实现软件的生命周期治理,从而转变,更代替地交付更稳固的软件。 更多内容大家能够通过以下社区路径理解Choerodon猪齿鱼文档,最新动静,产品个性: 【Choerodon官网】 https://choerodon.io/zh/ 【汉得开放平台】 https://open.hand-china.com/ 【汉得凋谢论坛】 https://openforum.hand-china.com/ 也能够退出Choerodon猪齿鱼官网社区用户交换群,交换猪齿鱼应用心得,Docker,微服务,K8S,麻利治理等相干实践实际心得,群同步更新版本更新等信息,大家能够加群探讨交换。 ①-Choerodon猪齿鱼官网交换(已满); ②-Choerodon猪齿鱼官网交换(可加);【微信号发至客服邮箱choerodon@vip.hand-china.com,经营小伙伴拉您入官网交换群】 欢送退出Choerodon猪齿鱼社区,独特为企业数字化服务打造一个凋谢的生态平台。

March 8, 2021 · 1 min · jiezi

关于api:WebRTC-系列之音频会话管理

WebRTC(Web Real-Time Communication)是一个反对网页浏览器进行实时语音对话或视频对话的 API。W3C 和 IETF 在2021年1月26日独特发表 WebRTC 1.0 定稿,促使 WebRTC 从事实上的互联网通信规范成为了官网规范,其在不同场景的利用将失去更为宽泛的遍及。 WebRTC 提供了视频会议的核心技术,包含音视频的采集、编解码、网络传输、显示等性能,并且还反对跨平台:Windows,Mac,iOS,Android。本文次要介绍 WebRTC 其 iOS 平台的音频会话 AVAudioSession。对于 WebRTC 往期相干技术分享,在文末有汇合,也欢送继续关注~ 概念介绍iOS 音频会话 AVAudioSession 是每一个进行 iOS 音频开发的开发者必须理解的基本概念。音频会话在操作系统 iOS、tvOS、watchOS 中是一项托管服务,零碎通过音频会话在应用程序内、应用程序间和设施间治理音频行为。 咱们能够应用音频会话来与零碎交换,打算如何在应用程序中应用音频。此时,音频会话充当应用程序与操作系统之间的中介,进而充当根底音频硬件之间的中介。咱们能够应用它向操作系统传播应用程序音频的性质,而无需具体阐明特定行为或与音频硬件的必要交互。将这些细节的治理委派给音频会话,能够确保对用户的音频体验进行最佳治理。 下图出自《Audio Session Programming Guide》,从图中能够看到 AVAudioSession 就是用来治理多个 APP 对音频硬件设施的资源应用。 音频会话的能力iOS 的音频会话能力次要分为以下几种状况: 配置音频会话激活音频会话响应中断响应路由更改配置设施硬件爱护用户隐衷具体的具体阐明能够参考官网:《Audio Session Programming Guide》,这里就不再全盘细说,本文将次要剖析配置音频会话、配置设施硬件两方面的技术细节以及分享理论开发过程中踩过的坑。 配置音频会话AVAudioSession 的 Category、CategoryOption、Mode 配合应用,不同的利用类型或者应用场景须要搭配不同的组合。 Category 次要有以下7种类型,其次要形容以及特点在表中具体介绍: CategoryOption 次要有以下7种类型: 下图具体列出了 Category、CategoryOption、Mode 配合应用状况: 分类表白音频角色表白音频行为的次要机制是应用音频会话类别。通过设置类别,咱们能够批示应用程序是应用音频输出还是音频输入,例如是否须要麦克风的采集、是否须要扬声器的播放等等。下文次要介绍音频会话类别 Category 在不同场景的利用,针对不同的 Category 的区别,能够对应上文表一具体查看。 游戏利用的场景大多数游戏都须要用户交互产生在游戏中。用户调出另一个应用程序或锁定屏幕时,他们不心愿该应用程序持续播放。设计游戏时,能够应用 AVAudioSessionCategoryAmbient 或 AVAudioSessionCategorySoloAmbient 类别。 ...

February 19, 2021 · 2 min · jiezi

关于api:RocketMQSpring-毕业两周年为什么能成为-Spring-生态中最受欢迎的-messaging-实现

作者 | RocketMQ 官微起源|阿里巴巴云原生公众号 2019 年 1 月,孵化 6 个月的 RocketMQ-Spring 作为 Apache RocketMQ 的子项目正式毕业,公布了第一个 Release 版本 2.0.1。该我的项目是把 RocketMQ 的客户端应用 Spring Boot 的形式进行了封装,能够让用户通过简略的 annotation 和规范的 Spring Messaging API 编写代码来进行音讯的发送和生产。过后 RocketMQ 社区同学请 Spring 社区的同学对 RocketMQ-Spring 代码进行 review,引出一段罗美琪(RocketMQ)和春波特(Spring Boot)的故事。 时隔两年,RocketMQ-Spring 正式公布 2.2.0。在这期间,RocketMQ-Spring 迭代了数个版本,以 RocketMQ-Spring 为根底实现的 Spring Cloud Stream RocketMQ Binder、Spring Cloud Bus RocketMQ 登上了 Spring 的官网,Spring 布道师 baeldung 向国外同学介绍如何应用 RocketMQ-Spring,越来越多国内外的同学开始应用 RocketMQ-Spring 收发音讯,RocketMQ-Spring 仓库的 star 数也在短短两年工夫内超过了 Spring-Kafka 和 Spring-AMQP(注:两者均由 Spring 社区保护),成为 Apache RocketMQ 最受欢迎的生态我的项目之一。 ...

February 4, 2021 · 3 min · jiezi

关于api:农商行数字化转型的烦恼

IT技术日益变革。当咱们在给客户分享烟囱式的单体利用如何逐渐拆分演变为SOA架构,SOA架构再如何彻底拆分演变成微服务架构的时候,更为新型的技术、架构又在冲击着咱们的认知。 互联网行业就像技术赛道上的领跑员,拖着很多老旧利用零碎的企业,如资源、金融、交通、银行等行业,也不得不致力跟一下技术的脚步。然而,从哪里起步、如何转型,成为他们最大的懊恼。 微服务相干的工作咱们曾经搞第四个年头了,“敏态服务运行撑持”在博云的微服务团队通过了N次实际,踩坑淌雷成千上万。从微服务框架、API网关,到服务网格、XX中台,从开源的到自研的,又将自研的开源进来,这么多我的项目走下来,咱们感觉也该认真地记录和认真地答复一下无关“数字化转型”的问题了。正好联合最近咱们博云泛滥的农商行我的项目,和大家分享一些技术架构的转型教训。 传说中所谓的“双态IT”前两年有个流行语叫“双态IT”,是由联想提出的“稳基业、敏冲破”谐和共存的倒退策略。稳态,通常指因为各种起因无奈微服务革新的零碎,或单体的或SOA架构的;敏态,天然是指能够微服务架构革新的,也就是咱们做我的项目的次要价值范畴。所谓双态谐和共存,其实就是指咱们要建设的敏态零碎如何与未革新的稳态零碎实现互联互通。这其实是企业数字化转型工作中的重点和难点。 敏态:敏到什么水平数字化转型我的项目的外围天然是技术架构的设计。新型的技术架构无外乎容器、微服务等云原生技术。因而,应用微服务的理念,麻利开发搭载容器技术的疾速集成与继续公布,这样的架构就是咱们的预期——敏态。 当然,技术架构的设计作为整个我的项目的外围,必须要认真钻研,诸如架构选型、组件选型、开发标准、日志标准等等。前面有机会咱们会再独自写一篇文章来剖析具体技术架构的设计,在明天这篇文章里,咱们只谈要害指标,只谈企业数字化转型中的整体策略。 微服务的技术应该是早于容器技术的,然而当容器技术走上舞台的时候,大家才发现这样的理念正是微服务最好的载体,因而微服务也跟着火了起来。这导致有很多未接触微服务的人,认为容器和微服务是有“因果关系”的,但实际上并非如此。 其实当初很多开源的微服务技术SpringCloud、Dubbo等与容器调度Kubernetes,多多少少是有点重叠,甚至抵触的,问题次要体现在服务注册发现、网络通信和负载平衡等等。当然,相应的解决方案还是容易找到的,比方舍弃etcd的服务发现,应用微服务注册核心组件,应用underlay网络形式等,还是能找到交融点的。 总的来说,敏态“敏”到什么水平?第一,服务逐渐迁入容器中,节俭资源、便于调度治理(有这两点益处就够了);第二,业务零碎逐渐革新成微服务,拍定一个将来五年内的微服务架构标准,在适合的机会革新每个业务零碎。 那么问题来了,须要在业务零碎革新成微服务的同时,将业务零碎运行在容器平台中吗?通过咱们多个我的项目的教训发现,在我的项目未启动的时候,这简直是显而易见的,然而在我的项目进行中却往往都是斗争的。因为容器革新和微服务革新大多数状况是在不同我的项目中启动,容器我的项目个别由运维部门推动,而微服务项目往往由架构部门推动,在我的项目工夫缓和、各有难点并想突出收益的状况下,这样的对接有点同床异梦。 但这其实也没有关系,数字化转型不只是须要技术架构的转型,更重要的是技术理念的转型,包含运维形式、治理形式、研发模式、团队运行模式等等。所以这须要企业做好“不能一步到位”的心里筹备,逐渐学习、逐渐遇到问题解决问题,能力更好地走好转型之路。 稳态:稳如绊脚石微服务转型过程中,最大的绊脚石就是那些非微服务的零碎,我的项目中通常叫做老旧零碎。而这些零碎往往是银行内的外围零碎或要害零碎。 技术架构的转型,不能影响现有业务,这是转型最大的准则和底线,所以这些在银行内业务上承当极重角色的老旧零碎,在技术架构上要以稳态保留。咱们做微服务治理,心愿、也假如全都是微服务,接入、标准、治理、检测、展现,而后功败垂成。但咱们在做微服务革新的我的项目时,微服务治理这些只是根底,新老零碎间的通信才是重点。 技术纷繁复杂,治理往往都在趋势对立。尤其是做数字化转型的时候,开发框架、运行形式、通信协议全副都要对立。为了建设更雄伟的指标,咱们首先应该让通信协议对立,在协定没买通的时候,天然就应该做好协定转换工作了。敏态零碎少数是七层的协定,HTTP、RPC类的,报文往往是JSON格局,但特点是比拟对立,基本上曾经被微服务框架所决定了;稳态零碎的协定就简单了,有很多都是独有的协定,报文格式也不同。 简单是比较复杂的,场景变动也是比拟多的,但场景和布局搞清楚了当前倒也不是特地难。起因有两点,一个是咱们只思考敏态与稳态间的通信,其实这是属于通信不频繁的,因而性能要求不会特地高,当然如果有性能要求高的咱们要在布局上尽量躲避;第二个是咱们只思考理论通信的具体几个接口,一一做协定的翻译工作,均匀每个接口半天工夫就翻译好了。那么翻译工作在哪儿做呢,脏活累活扔给API网关。 API网关-数字化转型的负重者不只是在数字化转型的我的项目中,在很多新型架构中都有API网关的用武之地。当然我要说一说服务网格,Sidecar其实就是个API网关,例如在Istio的解决方案中应用envoy。那在此处,API网关至多须要负责三种角色了: 敏态架构中,利用聚合对外提供服务,须要用到微服务网关,这是最简略的一个网关了,做简略点只有反对配置路由就能够了;做简单点也能够加一些治理、应用、权限、审批等等。ESB的对立对外接口,ESB(或者SOA架构中的别的服务总线)自身就很相似于一种网关,将所有其余零碎的不同协定整合、转换、通信。然而从服务总线进去的通常是TCP协定,总之不是微服务框架难受的协定。所以还是须要再转一下,转成敏态零碎能够随便拜访应用的协定。这就是API网关的第二种角色,用来对接ESB这类的服务总线。还有一种独立的业务零碎,既没被服务总线接管,也没做微服务化革新,但就是想要注册到注册核心,以微服务的通信形式与微服务互访。以前竭力不赞成应用Sidecar将老旧零碎接入微服务框架中做治理,然而咱们在我的项目中发现,企业也确实是有这样的需要,好在计划也简略。所谓Sidecar就是API网关,仍然是做好协定、报文的转换,而后将其以业务服务的形式注册到注册核心。如此一来,之后对该业务零碎做了革新,倒是能够更好对接之前的微服务了。所以我的项目的重点和难点其实是在API网关的建设,为什么说是重点呢?技术架构做的是标准,服务治理做的是运行中的观测,而网关是运行中业务通信的桥梁,间接影响到业务的拜访。 总结一下,少数金融、证券、中小银行都曾经处在做数字化转型的要害阶段了,而转型的真正价值其实在于标准治理和理念学习。这个世界变动太快,等须要的时候再学习就太晚了,当初转型还是尽量把心态放在学习和适应上。那么转型中的要害:新型技术的选型、革新的范畴、存量的兼容,在这篇文章里咱们都做了简略的介绍,心愿能给行将做数字化转型的企业或者正在做数字化转型我的项目的企业提供一些思路,缩小一些忧愁。后续如果有机会,咱们会对微服务技术架构每一块都做更深刻的探讨。

January 29, 2021 · 1 min · jiezi

关于SegmentFault:一文读懂-Kubernetes-APIServer-原理

前言整个Kubernetes技术体系由申明式API以及Controller形成,而kube-apiserver是Kubernetes的申明式api server,并为其它组件交互提供了桥梁。因而加深对kube-apiserver的了解就显得至关重要了。 整体组件性能kube-apiserver作为整个Kubernetes集群操作etcd的惟一入口,负责Kubernetes各资源的认证&鉴权,校验以及CRUD等操作,提供RESTful APIs,供其它组件调用: kube-apiserver蕴含三种APIServer: aggregatorServer:负责解决 apiregistration.k8s.io 组下的APIService资源申请,同时将来自用户的申请拦挡转发给aggregated server(AA)kubeAPIServer:负责对申请的一些通用解决,包含:认证、鉴权以及各个内建资源(pod, deployment,service and etc)的REST服务等apiExtensionsServer:负责CustomResourceDefinition(CRD)apiResources以及apiVersions的注册,同时解决CRD以及相应CustomResource(CR)的REST申请(如果对应CR不能被解决的话则会返回404),也是apiserver Delegation的最初一环另外还包含bootstrap-controller,次要负责Kubernetes default apiserver service的创立以及治理。 接下来将对上述组件进行概览性总结。 bootstrap-controllerapiserver bootstrap-controller创立&运行逻辑在k8s.io/kubernetes/pkg/master目录bootstrap-controller次要用于创立以及保护外部kubernetes default apiserver servicekubernetes default apiserver service spec.selector为空,这是default apiserver service与其它失常service的最大区别,表明了这个非凡的service对应的endpoints不禁endpoints controller管制,而是间接受kube-apiserver bootstrap-controller治理(maintained by this code, not by the pod selector)bootstrap-controller的几个次要性能如下: 创立 default、kube-system 和 kube-public 以及 kube-node-lease 命名空间创立&保护kubernetes default apiserver service以及对应的endpoint提供基于Service ClusterIP的查看及修复性能(--service-cluster-ip-range指定范畴)提供基于Service NodePort的查看及修复性能(--service-node-port-range指定范畴)// k8s.io/kubernetes/pkg/master/controller.go:142// Start begins the core controller loops that must exist for bootstrapping// a cluster.func (c *Controller) Start() { if c.runner != nil { return } // Reconcile during first run removing itself until server is ready. endpointPorts := createEndpointPortSpec(c.PublicServicePort, "https", c.ExtraEndpointPorts) if err := c.EndpointReconciler.RemoveEndpoints(kubernetesServiceName, c.PublicIP, endpointPorts); err != nil { klog.Errorf("Unable to remove old endpoints from kubernetes service: %v", err) } repairClusterIPs := servicecontroller.NewRepair(c.ServiceClusterIPInterval, c.ServiceClient, c.EventClient, &c.ServiceClusterIPRange, c.ServiceClusterIPRegistry, &c.SecondaryServiceClusterIPRange, c.SecondaryServiceClusterIPRegistry) repairNodePorts := portallocatorcontroller.NewRepair(c.ServiceNodePortInterval, c.ServiceClient, c.EventClient, c.ServiceNodePortRange, c.ServiceNodePortRegistry) // run all of the controllers once prior to returning from Start. if err := repairClusterIPs.RunOnce(); err != nil { // If we fail to repair cluster IPs apiserver is useless. We should restart and retry. klog.Fatalf("Unable to perform initial IP allocation check: %v", err) } if err := repairNodePorts.RunOnce(); err != nil { // If we fail to repair node ports apiserver is useless. We should restart and retry. klog.Fatalf("Unable to perform initial service nodePort check: %v", err) } // 定期执行bootstrap controller次要的四个性能(reconciliation) c.runner = async.NewRunner(c.RunKubernetesNamespaces, c.RunKubernetesService, repairClusterIPs.RunUntil, repairNodePorts.RunUntil) c.runner.Start()}更多代码原理详情,参考 kubernetes-reading-notes 。 ...

January 20, 2021 · 8 min · jiezi

关于api:API管理平台的作用

随着前后分端来到发成为互联网行业开发规范,程序也开始向API倒退,现如今API曾经成为程序开发与保护的要害。 API作为应用程序的重要组成部分,随同着应用程序更新迭代,API也一直的进行更新。其中API从设计开始直至弃用这一过程称之为API的生命周期,API治理平台的作用则是帮忙企业治理API生命周期的整个过程。 API治理平台如何治理API生命周期 想要理解API治理平台如何治理API生命周期,须要晓得API生命周期的过程,残缺的API生命周期过程如下图所示,其中可总结为:1、API设计与开发2、API测试3、API上线与保护 1、API设计与开发 在API设计阶段,负责人须要对API进行定义,定义API的性能、参数等信息。 设计实现后进入迭代打算,后端研发人员参考API文档开始进行开发,前端人员则可利用API治理平台疾速生成MockAPI进行前端开发。 2、API测试 API开发实现后,由测试人员参照API文档对API进行测试、编写测试用例,并设计利用场景进行测试。 3、API上线与保护 确认API能够失常运行并上线后,是API治理的另一个开始。须要定期的对API进行查看,理解API的稳定性,监控每个API是否衰弱,以便疾速定位运行谬误的API。 当我的项目达到肯定规模时还能够应用API网关。 以上简略介绍了API的生命周期几个重要阶段,并应用Eolinker进行演示,API生命周期所波及的点十分多,若筹备对API进行治理,须要思考到API的各个方面,选好一个API治理平台则有利于更快且更高效的治理API生命周期。 演示工具:www.eolinker.com

January 11, 2021 · 1 min · jiezi

关于api:Eolinker-SaaS-75版本更新

Eolinker SaaS 7.5 版本更新:反对Websocket、强化Mock API、强化我的项目版本比照性能等超20项改良 Eolinker SaaS产品已于近期公布 7.5 版本,带来超过18项更新: 更新详情 【API研发治理】产品更新阐明: API治理全面反对Websocket协定,反对Websocket API 文档治理、测试、测试用例、自动化测试等;反对设置分享API的范畴,能够只对外分享我的项目内的某些API;强化Mock API,创立API文档的时候主动创立一个默认的 Mock API;强化Mock API,反对启用/停用某些Mock API冀望;强化Mock API,返回数据类型新增“追随API文档返回后果”;强化Mock API,Mock API 触发条件和返回后果反对XML;强化Mock API,内置了局部Mock JS函数,不便间接通过下拉菜单生成随机数据;优化API文档版本治理,变更API状态也会生成一条变更记录;强化我的项目版本治理,反对比照我的项目内两个版本之间的API差别,比方2.0相比1.0新增或批改了哪些API;全新的主动生成API文档性能,反对从多个数据源同步API文档,比方同时从Swagger、apiDoc、Gitlab等起源生成API文档;强化主动生成API文档性能,反对给生成的API文档设置一个默认的分组或者状态;强化主动生成API文档性能,反对通过Open API一键触发同步操作;编写测试用例时,校验规定反对导入json、xml数据;优化API测试报告展现界面;创立新我的项目时主动开启API查重选项,如需敞开可在我的项目设置中批改;优化付费性能的展现界面;修复局部Bugs;【API自动化测试】产品更新阐明: 产品降级时不会清空定时测试工作,全副改为暂停状态;API文档发生变化时,反对一键同步到所有受影响的测试用例,缩小测试用例保护老本。优化付费性能的展现界面;修复局部Bugs;【API网络监控】产品更新阐明: 公布包月计费形式,计费更灵便更优惠;修复局部Bugs;局部更新点展现 1.API治理全面反对Websocket协定,反对Websocket API 文档治理、测试、测试用例、自动化测试等 在API列表页,点击新建API旁的下拉菜单,能够抉择“新建 Websocket API”。 在测试页面,在地址栏左侧也能够抉择申请协定为WS或WSS。 2.反对设置分享API的范畴,能够只对外分享我的项目内的某些API 进入我的项目详情页,侧边栏进入“API分享设置”,能够在右侧列表中启用或停用局部接口的分享性能。 3.强化Mock API,创立API文档的时候主动创立一个默认的 Mock API 零碎会主动为每个API创立一个“零碎默认冀望”,当无奈匹配到手动创立的冀望时,会主动命中零碎默认冀望。零碎默认的Mock API会主动依据API文档的返回后果返回随机的数据。 4.强化Mock API,反对启用/停用某些Mock API冀望 反对停用某些Mock API 冀望,被停用的冀望不会命中申请。能够通过这种形式疾速切换多个雷同触发条件的Mock API。 留神,如果有多个雷同触发条件的Mock API被命中,则零碎会返回第一个被命中的Mock API的值。 5.强化Mock API,返回数据类型新增“追随API文档返回后果” 返回后果追随 API 文档时,零碎会依据 API 文档返回参数主动生成返回的内容,当 API 文档发生变化时,返回后果的内容也会实时发生变化。 6.强化Mock API,Mock API 触发条件和返回后果反对XML Mock API的编辑页,触发条件反对抉择XML,触发条件的参数格局应用XPath语法。响应内容反对通过界面形式编辑XML构造,零碎会主动格式化为XML数据返回。 7.强化Mock API,内置了局部Mock JS函数,不便间接通过下拉菜单生成随机数据 点击Mock API响应内容的参数值的下拉菜单,能够抉择内置的Mock JS函数。 8.强化我的项目版本治理,反对比照我的项目内两个版本之间的API差别,比方2.0相比1.0新增或批改了哪些API; 9.全新的主动生成API文档性能,反对从多个数据源同步API文档,比方同时从Swagger、apiDoc、Gitlab等起源生成API文档; 反对从多个数据源同步API文档,比方同时从Swagger、apiDoc、Gitlab等起源生成API文档,如果同步过程中有多个起源存在雷同API(生成的接口协议、申请形式、名称、地址都一样,并且放在同一个目录下,则认为两个接口雷同),则同步程序靠后的会替换靠前的。 10.强化主动生成API文档性能,反对给生成的API文档设置一个默认的分组或者状态; 11.强化主动生成API文档性能,反对通过Open API一键触发同步操作; 12.API文档发生变化时,反对一键同步到所有受影响的自动化测试用例,缩小测试用例保护老本。 13.API监控公布包月计费形式,计费更灵便更优惠; ...

January 11, 2021 · 1 min · jiezi

关于api:API调试工具大汇总

前言大家好,我是CrazyCodes,明天总结下业界常见的API调试工具,家喻户晓,API调试工具即简单化的实现API调试流程,将Header、Cookie等其余频繁应用的参数进行复用,对成千上万的接口进行分类,不便查问治理。 Postman Postman是一款弱小网页调试工具的客户端,你能想到的,Postman简直都提供了。Postman兼容简直所有的操作系统,并且提供了WEB版本,能够让你随时随地加班,不错吧。言归正传,先看下postman的控制面板面板分为三局部 顶部 创立面板批量导入接口,咱们能够将共事的接口进行批量导入接口批量测试切换工作空间,与git概念类似,不同的工作区(分支),进行不同的工作同步、登录等等其余操作,postman有本人的云存储,注册账号能够将本机的调试接口同步到云上,这样就能够随时随地加班喽,不过收费用户是有存储下限的,具体请查看官网左侧 历史申请,会记录所有的申请调试接口汇合目录,将接口正当分类,是晋升工作效率的最佳实际右侧 调试内容区,咱们能够在这里进行任何形式的接口调试,申请形式反对rest格调,put,get,patch,post等等,并且能够设置认证形式,设置自定义的header头,设置前置脚本,后置脚本,并且设定了环境变量的性能,咱们能够依据本人的开发、测试、生产地址,配置不同的链接,实现地址复用 postman应该是开发人员家喻户晓的最佳api调试工具了,postman不仅仅是一个调试工作,也装备了项目管理,合作办公等性能,不过如同是免费的,具体能够在官网查问,官网地址我贴在上面了 https://www.postman.com/ Swagger Swagger是一款弱小的api文档工具,其生成的文档具备调试性能,它能够通过读取正文的形式,主动生成对应的api文档,并且反对将文档导出成其余格局,几乎不要太好,官网还特意开发了一项展现文档的ui页面,开源课随便批改的,其细节比拟多,是基于编码档次的,就不细细解说了。感兴趣的小伙伴能够点击下方链接 具体的玩法请见github https://github.com/swagger-api PhpStorm Http Client 我是一名php程序员,所以就以phpstorm为例来解说下,当然jetbrains内所有的产品都具备此项性能,PhpStorm 为接口调试提供了专属的工具,咱们在菜单Tools->Http Client 能够找到它, jetbrains 提供的此项接口调试性能是专门为程序员筹备的,没有任何界面,接口调试什么的全靠码,不过咱们能够以git最简略的形式去保护接口文档。 httpclient 通过创立demo.http文件来进行调试的,http是文件后缀上图是官网给到的demo,能够通过点击Run All Requests In File 对接口进行拜访,也能够点击每个接口地址后方的箭头进行单个接口调试,整体来说还是比拟不便的,接口的解释与失常代码正文一样 http client还反对将curl申请间接导入到http文件中 当然仍旧反对环境变量,反对形式是由一个独自的json配置文件管制点击后会主动在根目录创立配置文件 { "dev": { "url": "http://dev.baidu.com" }, "pro": { "url": "http://pro.baidu.com" }}咱们能够在http文件内通过{{url}}调用该变量,dev和pro别离代表不同的环境,咱们能够在此处抉择不同的环境 总体来说,简略简洁,可扩展性强,感兴趣的小伙伴能够试试 ApiPost apipost是国人开发的一款api调试工具,性能与postman类型,然而全副中文,其应用文档也十分具体https://doc.apipost.cn/ 冲着这句话,也得反对下,强烈推荐!如果你英文不太好,应用apipost你会get到很多postman的丰盛性能其没有web版本,但有linux,mac,windows客户端,做纯工具的公司不多了,让咱们守住他们。 Apizza 性能与apipost、postman类似,同一类产品,但只有web端,感兴趣的小伙伴能够点击下方链接进入 https://www.apizza.net/ 看云文档看云是thinkphp官网的文档管理工具,该文档内能够创立api调试 感兴趣的能够点击下方链接理解https://www.kancloud.cn/ Teambition一款合作项目管理工具,阿里巴巴搞的,该工作内文档性能能够创立api文档,可进行申请调试,感兴趣的能够点击下方链接 http://teambition.com/ 致谢工具永远只是工具,排序无好坏之分,咱们按需应用。 感激你看到这里,谢谢。

December 19, 2020 · 1 min · jiezi

关于api:接口测试并不只是测试参数和返回值

个别了解的接口测试无非就是,输出url、参数值,点击申请发送查看一下响应值和响应状态码是否失常就完事儿了。 然而接口测试真正的关注点不值这些,明天就给大家说说接口测试有那些须要关注的中央。 在理论我的项目中,后端接口测试通过后,个别前端还须要再测试一遍,读者可能会提出疑难:后端接口测试一遍,前端也测试一遍,是不是反复测试了?其实这两者并不反复,区别在于后端接口测试和前端功能测试各自的侧重点不一样,后端接口测试侧重点是检查数据的替换、传递和管制治理过程。而前端功能测试更加测试检测提供给用户的应用性能是否正确可用。尽管各种测试的重点不一样,但也存在雷同的局部,以功能测试、业务逻辑测试、性能测试和平安测试为例: 一、接口性能关注点功能测试:因为测试最终的指标都是业务性能是否正确且稳固可用,所以不论是前端给用户应用的性能策是,还是后端的接口测试,性能保障是根本要求,也是后端测试和前端测试两种测试重合度最高的一块。 具体关注点: 1.接口的性能是否正确实现了 2.接口是否依照设计文档中来实现(比方username参数写为了name,那么这就不合乎,因为接口文档在整个开发中都须要应用,所以接口理论的设计要与接口设计文档中保持一致) 3.兼容性测试: 比如说明天接口进行了调整,然而前端没有进行变更,这时候须要验证新的接口是否满足旧的调用形式 4.错误码测试: 通用的错误码与业务错误码是否可能清晰的阐明调用问题,错误码是否可能尽可能的全的笼罩所有的状况 5.返回值测试: 返回值除了内容须要是正确的,还须要类型也是正确的,保障调用方拿到这些参数可能正确的解析 6.默认值测试: 很多状况一些非必填的参数会有默认值,比如说一个查问的接口,参数count为返回查问的后果数量, 默认为10,那么就应该有一条case来测试,当然前置条件是数据库外面必须要存在这样的数据超过10条。 二、接口业务逻辑测试1.是否有依赖业务,比方查看订单,是须要用户首先登录的,所以必定要保障登录了或有相应的cookie 2.业务逻辑测试: 传递正确的参数,接口对数据库进行查问的操作,须要去验证数据库查问是否正确,接口对数据库进行 增删改的操作,也须要看数据库是否同步进行了这些操作 三、接口性能测试1.接口响应工夫 2.接口对应的服务器的吞吐量 3.接口并发数量 4.服务器进出口带宽 四、接口平安测试1.接口中敏感信息是否加密 2.必要参数是否后端也进行校验(当初很多零碎前后端架构是拆散的,从平安层面来说,只依赖前端进行限度曾经齐全不能满足零碎的平安要求(绕过前端太容易了), 须要后端同样进行管制,在这种状况下就须要从接口层面进行验证) 3.接口是否防歹意申请(SQL注入) 4.cookie:就是将header中的cookie批改或删除后看是否能返回相应的error code 5.header:就是删除或批改header中局部参数的值,看是否能返回相应的error code 6.惟一识别码:删除批改惟一识别码测试 五、接口测试工具apipost能够进行接口的功能测试和业务逻辑测试,除此之外还有弱小的接口文档生成性能。 jmeter弱小的接口性能测试性能

November 19, 2020 · 1 min · jiezi

关于api:抖音直播数据2

抖音视频Api、抖音直播Api、抖音评论采集、抖音弹幕采集、抖音爬虫、抖音去水印、抖音视频下载、抖音视频解析抖音直播数据、抖音数据采集、抖音直播监控TiToData:业余的短视频数据采集、解决平台。更多信息请分割: TiToData海量数据采集每天为客户采集5亿条数据笼罩支流平台:TikTok,Zynn,YouTube,抖音,快手,1688,小红书,拼多多,淘宝,美团,饿了么,淘宝,微博接口:直播间信息申请Apihttp://主机地址/douyin/liveroom/info?token=xxx&room_id=6843198199583378191申请形式GET参数字段类型阐明tokenstring接口受权码room_idint直播间id返回示例{ "code": 200, "data": { "data": { "AnchorABMap": { }, "admin_user_ids": [ ], "anchor_scheduled_time_text": "", "anchor_share_text": "#在抖音,记录美好生活#【小鱼家服饰1店】正在直播,来和我一起反对TA吧。复制下方链接,关上【抖音短视频】,间接观看直播!", "anchor_tab_type": 0, "app_id": 0, "auto_cover": 0, "base_category": 0, "book_end_time": 0, "book_time": 0, "business_live": 1, "category": 0, "cell_style": 3, "challenge_info": "", "client_version": 110500, "comment_box": { "placeholder": "说点什么..." }, "comment_name_mode": 0, "common_label_list": "", "content_tag": "", "cover": { "avg_color": "#EBE1CE", "height": 0, "image_type": 0, "is_animated": false, "open_web_url": "", "uri": "webcast/6819084786280876808", "url_list": [ "http://p9-webcast-dycdn.byteimg.com/img/webcast/6819084786280876808~tplv-obj.image", "http://p1-webcast-dycdn.byteimg.com/img/webcast/6819084786280876808~tplv-obj.image" ], "width": 0 }, "create_time": 1593306241, "deco_list": [ ], "distance": "", "distance_city": "", "distance_km": "", "dynamic_cover_dict": { }, "dynamic_cover_uri": "", "enable_room_perspective": false, "fansclub_msg_style": 2, "fcdn_appid": 0, "feed_room_label": { "avg_color": "#A3967C", "height": 0, "image_type": 0, "is_animated": false, "open_web_url": "", "uri": "webcast/2ea90002aca1159b5c67", "url_list": [ "http://p6-webcast-dycdn.byteimg.com/img/webcast/2ea90002aca1159b5c67~tplv-obj.image", "http://p3-webcast-dycdn.byteimg.com/img/webcast/2ea90002aca1159b5c67~tplv-obj.image" ], "width": 0 }, "finish_reason": 0, "finish_time": 1593362656, "finish_url": "", "follow_msg_style": 2, "forum_extra_data": "", "gift_msg_style": 2, "group_id": 0, "group_source": 0, "guide_button": { "avg_color": "#7A5353", "height": 0, "image_type": 0, "is_animated": false, "open_web_url": "", "uri": "webcast/aweme_button_togather_3x.png", "url_list": [ "http://p1-webcast-dycdn.byteimg.com/img/webcast/aweme_button_togather_3x.png~tplv-obj.image", "http://p9-webcast-dycdn.byteimg.com/img/webcast/aweme_button_togather_3x.png~tplv-obj.image" ], "width": 0 }, "has_commerce_goods": true, "hot_sentence_info": "", "id": 6843198199583378191, "id_str": "6843198199583378191", "introduction": "", "is_replay": false, "is_show_inquiry_ball": false, "is_show_user_card_switch": true, "last_ping_time": 0, "layout": 0, "like_count": 4746, "linker_map": { }, "linkmic_layout": 1, "live_distribution": [ ], "live_id": 1, "live_type_audio": false, "live_type_linkmic": false, "live_type_normal": true, "live_type_official": false, "live_type_sandbox": false, "live_type_screenshot": false, "live_type_third_party": false, "living_room_attrs": { "admin_flag": 0, "rank": 0, "room_id": 6843198199583378191, "room_id_str": "6843198199583378191", "silence_flag": 0 }, "location": "", "lottery_finish_time": 0, "luckymoney_num": 0, "mosaic_status": 0, "mosaic_tip": "", "orientation": 0, "os_type": 1, "owner": { "adversary_authorization_info": 1, "adversary_user_status": 0, "allow_be_located": false, "allow_find_by_contacts": false, "allow_others_download_video": false, "allow_others_download_when_sharing_video": false, "allow_share_show_profile": false, "allow_show_in_gossip": false, "allow_show_my_action": false, "allow_strange_comment": false, "allow_unfollower_comment": false, "allow_use_linkmic": false, "authentication_info": { "authentication_badge": { "avg_color": "", "height": 0, "image_type": 0, "is_animated": false, "open_web_url": "", "uri": "webcast/authentication_icon.png", "url_list": [ "http://p3-webcast-dycdn.byteimg.com/img/webcast/authentication_icon.png~tplv-obj.image", "http://p9-webcast-dycdn.byteimg.com/img/webcast/authentication_icon.png~tplv-obj.image" ], "width": 0 }, "custom_verify": "", "enterprise_verify_reason": "六安裕安星期八服装经营部" }, "authorization_info": 3, "avatar_large": { "avg_color": "", "height": 0, "image_type": 0, "is_animated": false, "open_web_url": "", "uri": "1080x1080/3110f00056c0567624bbb", "url_list": [ "https://p3-dy-ipv6.byteimg.com/aweme/1080x1080/3110f00056c0567624bbb.jpeg?from=4010531038", "https://p6-dy-ipv6.byteimg.com/aweme/1080x1080/3110f00056c0567624bbb.jpeg?from=4010531038", "https://p29-dy.byteimg.com/aweme/1080x1080/3110f00056c0567624bbb.jpeg?from=4010531038" ], "width": 0 }, "avatar_medium": { "avg_color": "", "height": 0, "image_type": 0, "is_animated": false, "open_web_url": "", "uri": "720x720/3110f00056c0567624bbb", "url_list": [ "https://p29-dy.byteimg.com/aweme/720x720/3110f00056c0567624bbb.jpeg?from=4010531038", "https://p9-dy.byteimg.com/aweme/720x720/3110f00056c0567624bbb.jpeg?from=4010531038", "https://p26-dy.byteimg.com/aweme/720x720/3110f00056c0567624bbb.jpeg?from=4010531038" ], "width": 0 }, "avatar_thumb": { "avg_color": "", "height": 0, "image_type": 0, "is_animated": false, "open_web_url": "", "uri": "100x100/3110f00056c0567624bbb", "url_list": [ "https://p29-dy.byteimg.com/aweme/100x100/3110f00056c0567624bbb.jpeg?from=4010531038", "https://p6-dy-ipv6.byteimg.com/aweme/100x100/3110f00056c0567624bbb.jpeg?from=4010531038", "https://p9-dy.byteimg.com/aweme/100x100/3110f00056c0567624bbb.jpeg?from=4010531038" ], "width": 0 }, "badge_image_list": [ { "avg_color": "", "height": 16, "image_type": 1, "is_animated": false, "open_web_url": "", "uri": "webcast/aweme_honor_level_icon_new_5.png", "url_list": [ "http://p6-webcast-dycdn.byteimg.com/img/webcast/aweme_honor_level_icon_new_5.png~tplv-obj.image", "http://p1-webcast-dycdn.byteimg.com/img/webcast/aweme_honor_level_icon_new_5.png~tplv-obj.image" ], "width": 32 } ], "bg_img_url": "", "birthday": 0, "birthday_description": "", "birthday_valid": false, "block_status": 0, "city": "", "comment_restrict": 0, "commerce_webcast_config_ids": [ ], "constellation": "", "create_time": 0, "disable_ichat": 0, "display_id": "xiaoyu58888", "enable_ichat_img": 0, "exp": 0, "experience": 0, "fan_ticket_count": 0, "fans_club": { "data": { "anchor_id": 0, "available_gift_ids": [ ], "badge": { "icons": { "0": { "avg_color": "", "height": 0, "image_type": 0, "is_animated": false, "open_web_url": "", "uri": "", "url_list": [ ], "width": 0 } }, "title": "" }, "club_name": "", "level": 0, "user_fans_club_status": 0 }, "prefer_data": { } }, "fold_stranger_chat": false, "follow_info": { "follow_status": 0, "follower_count": 214171, "following_count": 7, "push_status": 0 }, "follow_status": 0, "gender": 2, "hotsoon_verified": false, "hotsoon_verified_reason": "", "ichat_restrict_type": 0, "id": 95760275230, "id_str": "95760275230", "income_share_percent": 0, "is_follower": false, "is_following": false, "level": 0, "link_mic_stats": 1, "media_badge_image_list": [ ], "modify_time": 1600068668, "need_profile_guide": false, "new_real_time_icons": [ ], "nickname": "小鱼家服饰1店", "pay_grade": { "grade_banner": "", "grade_describe": "间隔6级还差17抖币", "grade_icon_list": [ ], "level": 5, "name": "", "new_im_icon_with_level": { "avg_color": "", "height": 16, "image_type": 1, "is_animated": false, "open_web_url": "", "uri": "webcast/aweme_honor_level_icon_new_5.png", "url_list": [ "http://p6-webcast-dycdn.byteimg.com/img/webcast/aweme_honor_level_icon_new_5.png~tplv-obj.image", "http://p1-webcast-dycdn.byteimg.com/img/webcast/aweme_honor_level_icon_new_5.png~tplv-obj.image" ], "width": 32 }, "new_live_icon": { "avg_color": "", "height": 12, "image_type": 1, "is_animated": false, "open_web_url": "", "uri": "webcast/aweme_pay_grade_2x_5_9.png", "url_list": [ "http://p6-webcast-dycdn.byteimg.com/img/webcast/aweme_pay_grade_2x_5_9.png~tplv-obj.image", "http://p3-webcast-dycdn.byteimg.com/img/webcast/aweme_pay_grade_2x_5_9.png~tplv-obj.image" ], "width": 12 }, "next_diamond": 0, "next_name": "", "next_privileges": "", "now_diamond": 0, "pay_diamond_bak": 0, "score": 48, "screen_chat_type": 0, "this_grade_max_diamond": 65, "this_grade_min_diamond": 45, "total_diamond_count": 48, "upgrade_need_consume": 0 }, "pay_score": 48, "pay_scores": 0, "push_comment_status": false, "push_digg": false, "push_follow": false, "push_friend_action": false, "push_ichat": false, "push_status": false, "push_video_post": false, "push_video_recommend": false, "real_time_icons": [ ], "sec_uid": "MS4wLjABAAAAKp0OuO92yhbvfneuhthk-gskWF0f_JD1W3LRVltoEkc", "secret": 0, "share_qrcode_uri": "7b85001cb87e09f40e06", "short_id": 830360786, "signature": "卖衣服的小鱼儿", "special_id": "", "status": 1, "telephone": "", "ticket_count": 1890, "top_fans": [ ], "top_vip_no": 0, "total_recharge_diamond_count": 0, "user_attr": { "is_admin": false, "is_muted": false, "is_super_admin": false }, "user_role": 0, "verified": true, "verified_content": "", "verified_mobile": false, "verified_reason": "", "with_car_management_permission": false, "with_commerce_permission": true, "with_fusion_shop_entry": true }, "owner_device_id": 0, "owner_user_id": 95760275230, "popularity": 0, "popularity_str": "", "pre_enter_time": 0, "preview_copy": "世界很大,但咱们很有缘~", "preview_flow_tag": 0, "private_info": "", "ranklist_audience_type": 0, "real_distance": "", "relation_tag": "", "replay": false, "replay_location": 0, "room_audit_status": 0, "room_auth": { "AudioChat": 2, "Banner": 1, "Chat": true, "CommerceCard": 1, "Danmaku": false, "DanmakuDefault": 0, "Digg": true, "DonationSticker": 2, "Gift": true, "GiftAnchorMt": 0, "HourRank": 0, "Landscape": 1, "LandscapeChat": 1, "LuckMoney": true, "MoreAnchor": 1, "POI": true, "Props": true, "PublicScreen": 1, "RecordScreen": 0, "RoomContributor": true, "Share": 1, "UserCard": true, "UserCorner": 1 }, "room_create_ab_param": "", "room_layout": 0, "room_tabs": [ ], "room_tag": 0, "scroll_config": "", "search_id": 0, "sell_goods": false, "share_msg_style": 2, "share_url": "https://webcast.amemv.com/webcast/reflow/6843198199583378191", "short_title": "", "short_touch_area_config": { "elements": { "1": { "priority": 0, "type": 1 }, "2": { "priority": 0, "type": 2 }, "3": { "priority": 0, "type": 3 }, "4": { "priority": 2, "type": 4 }, "5": { "priority": 3, "type": 5 }, "6": { "priority": 2, "type": 6 }, "7": { "priority": 2, "type": 7 }, "8": { "priority": 2, "type": 8 }, "9": { "priority": 2, "type": 9 }, "10": { "priority": 2, "type": 10 }, "12": { "priority": 2, "type": 12 } } }, "stamps": "", "start_time": 1593306245, "stats": { "digg_count": 0, "dou_plus_promotion": "", "enter_count": 0, "fan_ticket": 0, "follow_count": 2612, "gift_uv_count": 26, "id": 6843198199583378191, "id_str": "6843198199583378191", "like_count": 0, "money": 0, "total_user": 164069, "total_user_desp": "", "user_count_composition": { "city": 0, "my_follow": 0.02, "other": 0.27, "video_detail": 0.71 }, "watermelon": 0 }, "status": 4, "stream_close_time": 0, "stream_id": 683385719577641061, "stream_id_str": "683385719577641061", "stream_provider": 0, "stream_url": { "candidate_resolution": [ ], "complete_push_urls": [ ], "default_resolution": "ORIGION", "extra": { "anchor_interact_profile": 0, "audience_interact_profile": 0, "bframe_enable": false, "bitrate_adapt_strategy": 0, "bytevc1_enable": false, "default_bitrate": 800, "fps": 15, "gop_sec": 0, "h265_enable": false, "hardware_encode": false, "height": 640, "max_bitrate": 1333, "min_bitrate": 512, "roi": false, "sw_roi": false, "video_profile": 0, "width": 368 }, "flv_pull_url": { }, "flv_pull_url_params": { }, "hls_pull_url": "http://pull-hls-f11.douyincdn.com/stage/stream-683385719577641061.m3u8", "hls_pull_url_map": { }, "hls_pull_url_params": "{\"VCodec\":\"h264\"}", "id": 683385719577641061, "id_str": "683385719577641061", "live_core_sdk_data": { "pull_data": { "options": { "default_quality": { "level": 0, "name": "超清", "resolution": "", "sdk_key": "origin", "v_codec": "" }, "qualities": [ { "level": 3, "name": "超清", "resolution": "720x1280", "sdk_key": "origin", "v_codec": "264" } ] }, "stream_data": "{\"common\":{\"session_id\":\"037-20200914230522010021067202095FE415\"},\"data\":{\"origin\":{\"main\":{\"flv\":\"http://pull-flv-f11.douyincdn.com/stage/stream-683385719577641061.flv\",\"hls\":\"http://pull-hls-f11.douyincdn.com/stage/stream-683385719577641061.m3u8\",\"cmaf\":\"\",\"dash\":\"\",\"sdk_params\":\"{\\\"VCodec\\\":\\\"h264\\\",\\\"gop\\\":4,\\\"resolution\\\":\\\"720x1280\\\",\\\"vbitrate\\\":909728000}\"}}}}" }, "push_data": { "push_stream_level": 0, "resolution_params": { "ld": { "default_bitrate": 800000, "fps": 15, "height": 848, "max_bitrate": 1333000, "min_bitrate": 320000, "width": 480 }, "sd": { "default_bitrate": 1000000, "fps": 15, "height": 960, "max_bitrate": 1600000, "min_bitrate": 500000, "width": 540 } } } }, "provider": 0, "push_urls": [ ], "resolution_name": { "FULL_HD1": "蓝光", "HD1": "超清", "ORIGION": "原画", "SD1": "标清", "SD2": "高清" }, "rtmp_pull_url": "http://pull-flv-f11.douyincdn.com/stage/stream-683385719577641061.flv", "rtmp_pull_url_params": "{\"VCodec\":\"h264\"}", "rtmp_push_url": "", "rtmp_push_url_params": "", "stream_control_type": 0 }, "sun_daily_icon_content": "", "tags": [ ], "title": "小鱼家????服饰正在直播", "top_fans": [ ], "use_filter": false, "user_count": 0, "user_share_text": "#在抖音,记录美好生活#【小鱼家服饰1店】正在直播,来和我一起反对TA吧。复制下方链接,关上【抖音短视频】,间接观看直播!", "vertical_cover_uri": "", "vid": "", "video_feed_tag": "直播中", "wait_copy": "失去急躁的期待将幸福擦肩而过", "web_count": 0, "webcast_comment_tcs": 0, "webcast_sdk_version": 0, "with_draw_something": false, "with_ktv": false, "with_linkmic": false }, "extra": { "now": 1600095922450 }, "status_code": 0 }, "msg": "success"}

November 13, 2020 · 6 min · jiezi

关于api:浅谈API网关API-Gateway如何承载API经济生态链

摘要:对于如何承载现有疾速倒退的API生态链,本文接下来介绍API网关在其中表演的角色。序言API经济生态链曾经在寰球范畴笼罩, 绝大多数企业都曾经走在数字化转型的路线上,API成为企业连贯业务的外围载体, 并产生微小的盈利空间。快速增长的API规模以及调用量,使得企业IT在架构上、模式上面临着更多的挑战。对于如何承载现有疾速倒退的API生态链,本文接下来介绍API网关在其中表演的角色。 API是什么利用编程接口(Application Programming Interface,简称:API),就是软件系统不同组成部分连接的约定【维基百科】。简略的例子:您每次登陆微信,须要提供账号信息能力拜访, 微信提供的这个认证载体就是一个API。API曾经无处不在,金融、IT、物联网等,发展趋势相当迅速, 无形之中贯通着咱们的生存。 纵观这几年的倒退,API在一直的技术迭代中造成了几股独特的趋势: 1.API凋谢数量一直减少 毋庸置疑,随着企业的数据化停顿,微服务革新,不同畛域的API层出不穷,早在2014年ProgrammableWeb便预测API矢量可达到100,000到200,000,并会一直增长。API开发数量的减少给边缘系统带来机会,也随即演变了API网关的呈现。大规模的API管理系统成为外围的发展趋势。 图片起源:The API Economy Disruption and the Business of APIs,Nordic APIs 2.API服务平台多样化 最后的API次要针对不同单体利用的网络单元之间信息交互,现已演变到服务间疾速通信。随着人工智能EI,IOT的一直演进,依赖API的平台不断更新,如Web,Mobile,终端等,将来将会呈现更多的服务体系。 3.逐渐替换原有企业的服务模式,API即商品 卖计算,卖软件,卖能力,最终的企业的销售模式会逐渐转变,能力变现,开释数据价值,依靠不同的API治理平台发明新的盈利。 API网关为何诞生随着API的整体趋势倒退,每个历史时代都面临着不同的挑战,架构也随之变动,能够参考一下: 图片起源:API economy From systems to business services 从最原始的“传输协定通信” -> “简略的接口集成” -> “消息中间件” -> “规范REST”, 能够看到API的倒退更趋向于简洁, 集成,规范化, 这也促使更多的零碎边界组件不断涌现,在承载了万亿级的API经济的背景下, API网关应运而生。 Gartner 报告中提到: 如果没有适合的API管理工具, API经济不可能顺利开展。 同时提出了对于API管理系统的生命周期定义: planning(布局), design(设计), implementation(施行), publication(公布),operation(运维), consumption(生产), maintenance(保护) and retirement of APIs(下架)【起源:Magic Quadrant for Full Life Cycle API Management,Gartner发表于2016-10-27】。 ...

November 9, 2020 · 1 min · jiezi

关于api:接口测试用例思路总结

最近在跟一个我的项目,顺便把Eolinker应用培训里说到的接口测试用例的设计思路总结了下,次要波及两个大方向。 第一个方向是独立接口测试; 第二个方向是多维度接口测试,通过结构情景来丰盛接口测试数据来达到。 用例设计——方向一: 用例一 基本功能,全副参数 1、参照接口文档,理解接口性能后,首先判断是否合乎业务需要逻辑 2、验证基本功能,将波及到的参数全副传参 用例二 短少可选项 1、传参中只有必填项,无可选项参数 2、传参中只有必填项,短少其中一个可选项参数 短少必填项 1、传参中短少其中一个必填值,参照变1准则。 2、传参中短少全副必填参数,有可选项 3、将必填参数名称批改为非法 用例三 参数越界 1、探测参数的边界值,通过边界值检测接口 用例四 参数类型 1、字符串、整型 用例五 笼罩全副门路,包含失常、异样 用例六 入库出库查看 入库a,库中值为:a,查问值为a 用例设计——方向二: 用例七 情景构建 这也是比拟重要的,这个比拟考验测试er对业务的熟练度,尽可能多的模仿场景,达到接口测试覆盖度更加全面 实例: 具体失败起因 姓名不能为空且限度1-50个字符165 昵称不能为空且限度6-24个字符166 公司名称不能为空且限度4-128个字符167 固定电话格局谬误168 邮箱格局不正确,请批改后保留164 请抉择城市154 请抉择性别3003 以上是7类用例设计办法,有脱漏当前补充。 www.eolinker.com

November 8, 2020 · 1 min · jiezi

关于api:为什么需要使用API管理平台

API是动静的,他会定期增加新的性能,而旧性能随着我的项目的倒退逐步隐没,通过简略的治理办法来获取和响应所有API调用类型并不容易,特地是随着跨软件环境传输的调用数量的减少。最终,手动治理是不可能的,而自动化零碎成为一种需要。 API治理指标 API的治理指标围绕着整个API 的生命周期,开发团队须要一个牢靠的流程来对API进行系统化的治理,这其中包含具体的API文档与API版本控制等。 API治理平台的益处 即便有正确的流程,手动进行全面的API治理依然很简单。这就是专门从事API治理平台和相干产品的云提供商须要提供的解决方案。现在,一些最受欢迎的API治理平台包含:swagger、EOLINKER、Azure API Management... API治理平台 以下是API治理的几个最大的长处: 1、版本控制和文档。杰出的API管理工具除了能够手动创立API外,还可应用疾速导入性能为其创立API及其所需的文档。创立API后,零碎会治理新版本,使每次更新迭代版本都一目了然。 2、音讯告诉。欠缺API文档后,当我的项目更新,API须要进行迭代优化,批改后的API文档可设置告诉,晋升信息的时效性的同时,让开发团队疾速理解API批改内容或新性能。 3、团队合作。不同企业开发团队规模不同,其中还蕴含测试团队。为了能让不同角色操作不同我的项目,权限设置分外重要。 4、测试。API治理平台不仅能够提供清晰的API文档,还须要对API进行疾速测试,EOLINKER将API测试与API自动化测试集成与API治理平台中,还提供了mock性能,这样能够确保API治理过程在开发阶段尽早开始,帮忙解决在开发实现之前须要进行的测试和改良工作。 5、API监控。API监控能够实时查看API的衰弱状况,包含不同节点的API,当我的项目产生谬误,API监控能够帮忙咱们疾速定位谬误的API,节俭了大量工夫老本。 并不是每个我的项目或企业都须要API治理平台。但如果您须要一个API治理的解决方案,想让API治理更加标准并流程化,能够理解文中所展现的API治理平台。www.eolinker.com

November 8, 2020 · 1 min · jiezi

关于api:API生命周期的5个阶段

API帮忙各种软件产品进行协同工作。同时API也是软件,提供其他软件组件或零碎之间的通信或交互方式,每个API都有一个生命周期。 API常常在迭代软件开发过程中扮演着重要的角色,该过程倒退迅速。开发人员必须放弃API的稳定性,同时关联的应用程序要进行频繁的更新和更改。对于依赖于该API的软件和服务,一直公布API的新版本可能会很麻烦。 API生命周期 只管对于API生命周期的理论局部有不同的认识,但本文应用五个经典阶段:布局,开发,测试,部署和淘汰。 1.布局阶段 任何API开发我的项目都必须从布局和设计开始。让业务团队成员确定API应该公开哪些服务和性能。记录特定的业务需要,并输入为性能和非性能的全面需要文档。 建设API需要后,开发团队能够依据命名规定,体系结构和要应用的特定协定,做出理智的设计决策。布局和设计应产生一个API标准,该标准形容了接口反对的办法和操作以及任何技术束缚。 2.开发阶段 API能够用多种编程语言编写,包含PHP,Python,Ruby,.NET,C#,Java和Perl。编码和测试可能须要进行屡次迭代,然而开发团队不应在API稳固之前将其公布到生产环境中。最终,API开发须要优良的打算、编码和测试性能,以及最大限度地缩小面向客户的API更改所需的准则。 API开发能够由单个开发人员实现,但通常由一个独立的、专用的API开发团队进行开发。因为是团队单干,因而多个开发人员将须要合作拜访和保护他们的API。整个API团队都应该可能查看API代码、文档和测试文件并与之交互。这对于实现全面的搜寻和版本控制也很重要,有助于受权的开发人员依据条件(如我的项目和版本)来定位API。 此外,多个开发人员能够更轻松地创立文档,测试用例,甚至能够创立使企业胜利应用公共API所需的一些营销资料。 API开发计划应始终围绕以下三个注意事项: 如何跟踪API的应用,性能,谬误和其余重要指标。 平安组件,特地是OAuth 2.0受权和API密钥验证。 性能和可拜访性问题,例如节流和速率限度,以确保足够的API拜访。 3.测试阶段 开发人员必须彻底测试API的每个迭代的性能、性能和用户接受度。测试人员能够将不称心的后果反馈给开发人员,进一步构建和改良API代码。 功能测试可验证每个性能个性是否按预期运行。应用模型和测试版本依据其标准评估API的性能。功能测试还强调安全性和错误处理能力,确保API免受解体或攻打。 性能测试评估API在负载下的执行状况。许多api都受到不稳固的流量和不可预测的负载条件的影响。性能测试指标掂量API在重负载下的性能,例如响应某个应用程序申请所需的工夫。 验收测试会跟踪API的应用状况,并判断它是否达到了预期的业务目标。验收测试能够揭示业务流程或API自身的变更可能产生的任何新需要。它能够帮忙辨认对现有函数的可能更改,从而使API更加有用。例如,在数据可能被传递到API或从API传出的状况下,验收测试能够揭示须要将更多或不同的数据作为参数传递。 4.部署阶段 当一个API稳固且平安,就能够投入生产了。然而,与许多软件产品一样,API的初始版本可能会作为性能测试和验证的第二阶段。 例如,开发人员可能会尝试将最新版本的API利用到没有最新版本的API环境中,在该环境中,开发人员能够在不影响实时版本的状况下尝试应用该软件的最新API版本。现实状况下,当开发人员筹备好最新版本时,该API即可用于残缺的生产环境。此过程的要害局部是收集跟踪API性能的指标,例如它遇到的谬误数量。 开发人员必须将新API版本造成的中断降到最低。编写良好的API应该蕴含一个版本调用函数,该函数能够检索已知良好的版本,以便在新版本不适合的状况下投入生产。 修复谬误或进步性能的API更改通常不会影响API调用和响应。然而,用于身份验证的新参数和参数,或其余根本设计更改,可能会迫使用户在拜访新的API版本之前执行软件更新。 5.退休阶段 开发人员能够随工夫扩大和更新API以进步业务价值,然而随着工夫的推移,每个API都会减少基础架构和反对老本。最终,软件团队淘汰了旧的API和旧版本的API。因而,企业须要认真布局从一个API版本到另一个API版本的迁徙门路,并在优化新版本的同时学习一次保护多个API版本。软件团队须要一个终止生命周期的打算,以便在不重大影响日常经营的状况下停止使用API。 监控是这个退出过程的重要组成部分,尤其是在跟踪API的年龄和历史记录时。例如,一家企业可能发现有些API曾经90至120天简直没有应用过了。然而,它们仍托管在根底构造中,耗费资源并产生老本。这就是为什么跟踪这些API是一个无效的API退休打算的重要组成部分。 本文为公司外部培训应用,借助EOLINKER API管理工具进行展现,目前公司外部对立应用EOLINKER进行API治理及自动化测试,欢送有趣味的敌人与我交换! www.eolinker.com

November 8, 2020 · 1 min · jiezi

关于api:API版本控制

版本控制是计算机软件行业人士应用的术语。但进化是咱们所有人都要经验的事件,它实用于这个世界上的每个对象。 在计算机软件行业,能够看到每3至4年,每台计算机软件都会附带不同的发行版/版本,以满足以后/古代的要求。 版本控制是创立和治理软件产品的多个版本的实际,消费者能够依据本人的需要决定应用哪个版本,API的治理也是如此。 API的创立始终始于使应用程序与外部/内部应用程序开发人员集成的想法。就像任何其余传统软件产品一样,它总是从小规模开始,并且会随着工夫而倒退。让咱们看上面的简略用例,以更好地了解它。 例如,咱们可能心愿使外部/内部应用程序开发人员可能拜访客户信息,并且可能开始创立API以提供所需的性能。 作为第一个版本,您能够为API提供仅对客户信息的读取权限。起初,随着对应用程序需要的减少,您的应用程序开发人员可能会申请对客户信息的“写入/更新”拜访权限。作为API创建者/开发者,您能够决定是否: 提供具备对客户信息的写入/更新拜访权限的同一API的新版本齐全提供独自的API,以提供对客户信息的写入/更新拜访权限API的通用设计准则是应用第一种办法-从应用程序开发人员的角度来看,为咱们提供雷同性能的API的新版本,以及咱们解决同一实体(客户)时的附加性能。这将导致具备雷同API的2个版本: · CustomerInfo v1.0-提供对客户信息的只读拜访 · CustomerInfo v2.0 —提供对客户信息的读/写/更新拜访 通过API的版本控制,CustomerInfo API的使用者能够依据须要决定应用哪个版本。 当咱们想反对同一个API的多个版本时,作为API创建者/设计者,咱们须要思考以下02个次要设计决策: · 指定API版本信息的格局是什么 · 消费者将如何指定所选API的API版本 抉择用于指定版本信息的格局时,能够抉择以下02种常见做法: · 应用公布/构建日期-这容许应用公布/构建日期来惟一标识每个版本。 示例—版本=“ 20200808” | 版本=“ 20190102” · 应用major.minor数字 -这些数字用于指定同一API的不同版本,并且该数字能够蕴含1或2或3位数字作为版本号的一部分。一些API开发人员应用“ v”前缀来示意它是版本号。 示例— version =“ 1” | 版本=“ v1” | 版本=“ 1.1” | 版本=“ v1.1” | 版本=“ 1.1.1” | 版本=“ v1.1.1” 在决定使用者如何指定版本信息时,能够从以下03种常见做法中进行抉择: · HTTP标头-自定义HTTP标头将用于传递API版本信息 示例— x-customerinfoapi-version:2.1 · 查问参数-API版本信息将作为查问参数传递 示例-/customerinfo?version=2.1 · URL -API版本信息将合并到URL自身 示例-/ v2 / customerinfo ...

November 1, 2020 · 1 min · jiezi

关于api:人少钱少需求多的新项目该怎么带看到这篇我心里有底了

摘要:工作啊,就没有一帆风顺的,如果太安稳,你就离被干掉不远了。上回说道,年底各业务线的开发需要暴增,导致测试团队压力太大个体闹到职,亏得我提出了一个计划,用华为云的云测工具来加重测试压力(回顾:【API进阶之路】研发需要突增3倍,测试团队个体闹到职),这才度过了难关。谁知忙完了这一阵,又该忙下一阵。于是苦中作乐的我,忽然想起来不晓得哪位名人已经说过:工作啊,就没有一帆风顺的,如果太安稳,你就离被干掉不远了。 到职风波总算是“有惊无险”的过来了,在月度总结复盘会上,老板间接提问:“你们研发部门有那么多人,为什么还会呈现这种状况呢?”他这一问我立马感觉到有状况,之前咱们一起剖析过起因了,明天又这么问,怕不只是因为这件事了。 果不其然,老板接着说,公司决定上线一个短视频制作工具,抓住以后短视频风口倒退新业务。但当初同类产品比拟多,后期试水阶段不会投入太多资源,让咱们本人安顿人力进行平台开发。 这......原本开发资源就缓和,再做新业务,可能又会有一部分人投进去出不来,之前很多老我的项目就是这样,摸索了一段时间没有大倒退,又不能轻易放弃,研发资源被一直占用。做得好的话前期的需要也没法估算,到时候还会面临这种需要突增的状况,开发运维测试的压力也会很大。 那有没有什么方法从我的项目开始就解决这个问题呢? 会后,我跟研发老大钻研了一个新的计划:应用华为云利用治理与运维平台(ServiceStage)来做新我的项目的开发和治理。 利用治理与运维平台(ServiceStage)是一个利用托管和微服务治理平台,能够简化部署、监控、运维和治理等利用生命周期管理工作。ServiceStage提供了微服务、挪动和Web类利用开发的全栈解决方案,岂但可能进步开发效率,也加重了前期治理的压力。 ** ** 图 ServiceStage性能 这个我的项目我亲自带,应用ServiceStage的形式也比较简单, ServiceStage提供了各种API接口:包含部署工作、环境治理、利用治理、组件治理、注册发现等,满足开发、部署、托管、运维的需要,通过调用API就能够间接实现以上操作。 以环境治理和利用治理为例介绍操作步骤。 前提条件获取IAM的token,调用token认证,并将token值设置为环境变量:export Token={token}获取ServiceStage的endpoint。示例1:环境治理操作步骤1、调用“创立环境接口”,增加根底资源。 申请示例 curl -k -H "Content-Type:application/json" -H "X-Auth-Token:$Token" -X POST "https://{servicestage_endpoint}/v2/{project_id}/cas/environments" -d '{ "name": "dev-env", "description": "develop environment", "enterprise_project_id": "0", "charge_mode": "provided", "vpc_id": "b9b8f9ad-1a2e-403d-83f1-cb71a3c06df8", "base_resources": [ { "id": "b6862a62-d916-11e9-bdf1-0255ac101fd9", "type": "cce" } ] }' 返回后果如下,失去的id,后续示例中以{environment_id}代替。 { "id": "ea011e01-2eb5-453f-87bf-874e4a855abe", "name": "dev-env", "alias": null, "description": "develop environment", "project_id": "bf8523d898b64e4eb956e3be3555ca16", "enterprise_project_id": "0", "charge_mode": "provided", ...

October 30, 2020 · 2 min · jiezi

关于api:维格表11月版本新上线小波实用更新能在线看片了

vika维格表是一款反对API的新一代团队数据合作神器,将简单的SaaS软件简化到Excel一样简略易用,企业可通过DIY自主搭建、实时API、在线合作等性能,以传统SaaS零碎百分之一的价格,无效实现企业数字化。 同时,基于vika维格表本身结构化数据库的产品个性,可利用在丰盛多元的集体利用场景,将工作与生存的数据信息连通,打造「集体一生数据库」。 具体产品介绍可参考:《公测首发 | 反对API的连贯型智能表格,「vika维格表」如何让数字化真正成为生产力?》https://mp.weixin.qq.com/s/icTzGobd95GyixHO3Q618A 在9月公测版公布后,得益于用户地频繁应用,发明了大量的维格表,「维格星球」新增了许多能量,甚至呈现了一些「能量外溢」。 于是,咱们用这部分能量,对维格表进行优化更新。和维卡比一起来看看这次11月版本都有哪些更新亮点吧~ 1. 维格表反对第三方钉钉和QQ扫码注册/登录vika维格表领有凋谢API性能,「连贯所有」不是随便说说,据维卡比所知,一些企业用户曾经将维格表与钉钉连通,实现会议、审批等性能同步记录,外部合作、工作回溯不是个别得顺畅~ 这次11月版本新增反对第三方钉钉和QQ扫码注册/登录,是维格表「连贯所有」的一小步,也是朝着「vika互联宇宙」迈进的一大步。 在第一次扫码登录、实现手机注册后,会默认读取钉钉/QQ/微信的昵称和头像,作为你在「维格星球」的身份信息。 这项小更新,我·取名艰难症·维卡比真的爱了爱了。 在入驻「维格星球」后,你能够随时在用户核心里更换本人的名称及头像噢~ 2. 视图筛选性能新增两个筛选条件视图筛选性能新增「蕴含以后用户」和「等于以后用户」两个筛选条件。 有些新增的性能点,乍一眼看上去平平无奇,但当你真正用到的时候,会情不自禁在心里感叹:这项性能真**好用。 这次视图筛选性能新增的两个筛选条件就是这种小而贴心的性能。 vika维格表在设计之初,就承载着多人合作的使命。在实在的项目管理场景中,我的项目成员常须要在维格表中迅速筛选本人相干的工作、事项、数据,甚至建设单个视图。视图冗余导致公共合作场景效率升高,数据查找的步骤变得繁琐。 这次新增「蕴含以后用户」和「等于以后用户」两个筛选条件,不仅能让用户对本人的工作高深莫测,简化步骤,实现视图「千人千面」的成果,还能同时筛选相干人员,在外部内部分享过程中,防止视图冗余带来信息泄露的问题。 贴心性能无疑了~ 3. 视图列表新增查找视图性能在上个版本中,维格表新增了「看板」视图。但不同的分组、不同的筛选条件带来大量的视图列表,再加上维格表好看简洁的相册视图、看板视图等个性化视图,再再依据业务口径、统计需要不同,一份数据往往须要大量的视图列表。 新增的视图列表查找性能,让你在多维度、多人员、多视图分类的视图列表中,迅速找到你想要的那份数据,效率又再次晋升了~ 4. 新增公式函数COUNTIF()用法:COUNTIF(values, keyword, operation) 作用:在values中统计keyword呈现的次数。 *values:指定从哪里查找数据。反对数组类型或文本类型的数据。*keyword:要查找并统计的关键词。*operation:比拟符,非必填项。你能够填入条件符号大于">",小于"<",等于"=",不等于"!=",如果不填写默认为等于。 能够用来: *统计一串文本数组中,某个字符呈现的数量; *统计一串数字数组中,符合条件的数字数量; *统计一串日期数组中,符合条件的日期数量; *统计一串文本字符串中,某个字符呈现的次数; 这里以「法律事务」应用场景为例: 在实现每月的统计汇总后,事务所须要对当月案件类型及数量进行统计回顾,并得出每类案件所占当月案件数量的比重,依此对工作进行疾速调整。 灵活运用COUNTIF()函数,同时搭配其余函数和「神奇援用」性能应用,无需另外建表、无需整顿结算,立马就能得出当月每类案件占比,如下图所示???? 每个月都在为统计报表懊恼「头秃」的童鞋,学会这招了吗? 如果动图看不明确,能够辨认下方二维码退出咱们的用户群,技术大神在线一对一教你应用「COUNTIF()」函数噢~~ ![]() 5. 附件反对MP4在线播放对于新媒体附件的反对,是维格表作为「多维智能型表格」的「自尊心」。 维卡比曾经听到N个小姐姐吐槽Excel对图片、文档、视频等多媒体有多差劲了……她们对适配多媒体的智能型表格的需要,可能不亚于期待王者峡谷己方队伍里呈现一位「野王」…… 在11月版本更新中,维格表反对MP4格局视频在线播放了~ 视频预览、观看更加不便,对于项目管理、产品问题展现、视频汇总、设计合作等多种利用场景来说,不便得真的不是一点点。 维卡比舒适揭示:目前收费空间为1G,须要分外留神上传的视频大小噢~ 6. 挪动端表格区域反对左右滑动查看一条记录的残缺信息挪动端咱们始终在考虑如何做得更好、更合乎维格表「革命性产品」的定位,但失去最优解之前,咱们没有遗记挪动端的体验优化:本次11月版本更新中,挪动端表格区域反对左右滑动查看一条记录的残缺信息了,带来更良好的数据查看体验~ 可不要小看这项更新噢,每一个小小的扭转都是为了更弱小美妙的今天~~ 7. 附件列表组件反对疾速粘贴附件内容在上个版本中,维格表更新了快捷键面板,进一步晋升了维格表的应用效率。在本次11月版本更新中,附件列表组件反对疾速粘贴附件内容啦~ 你能够将「附件维格列」彻底当成你的材料仓库:乏味的表情包,代表你万里挑一的灵魂,Ctrl+V放进去;这个小视频真乏味,保留下来分享给好友,Ctrl+V放进去;工作文档不晓得存哪里,Ctrl+V放进去。 「附件维格列」再次腾飞有木有~ 这种嘚瑟的情绪,维卡比我不禁哼起了那首歌: ???? 普普通通的附件,普普通通地摇~ ???? 普普通通的Ctrl+V,普普通通得顺滑~ ...

October 30, 2020 · 1 min · jiezi

关于api:接口是什么实现原理的是什么

一. 什么是接口 接口是一种用来定义程序的协定,它形容可属于任何类或构造的一组相干行为。 接口是一组规定的汇合,它规定了实现本接口的类或接口必须领有的一组规定。体现了自然界“如果你是……则必须能……”的理念。 接口是在肯定粒度视图上同类事物的形象示意。因为“同类事物”这个概念是绝对的,它因为粒度视图不同而不同。 二. 为什么要应用接口?而不是间接实现呢? 接口的应用并非总是从设计的角度来思考。接口和python其余语法景象一样,独特形成了python整个语言体系。 接口的意义在于 形象、不拘细节,从而使同类事物在同一高度具备通用及可替代性。 在系统分析和架构中,分清档次和依赖关系,每个档次不是间接向其下层提供服务(即不是间接实例化在下层中),而是通过定义一组接口,仅向下层裸露其接口性能,下层对于上层仅仅是接口依赖,而不依赖具体类。 零碎灵活性加强当下层须要扭转时,只有接口及接口性能不变,则下层不必做任何批改。甚至能够在不改变下层代码时将上层整个替换掉,就像咱们将一个WD的60G硬盘换成一个希捷的160G的硬盘,计算机其余中央不必做任何改变,而是把原硬盘拔下来、新硬盘插上就行了,因为计算机其余局部不依赖具体硬盘,而只依赖一个IDE接口,只有硬盘实现了这个接口,就能够替换下来。不同部件或档次的开发人员能够并行动工就像造硬盘的不必等造CPU的,也不必等造显示器的,只有接口统一,设计正当,齐全能够并行进行开发,从而提高效率。那么具体什么时候用,什么时候不必呢?在常见的三层架构中,有以下几个档次,别离进行阐明: 界面层也就是展现层,间接出现给用户的,可能不同的软件有不同的出现形式,比方Web,WinForm,甚至挪动APP,在这个档次,我认为是没有必要写太多的接口。业务逻辑层这个档次,业务逻辑,能够依据须要应用接口。如果是间接读写数据库什么的,就间接用调用数据库拜访层的接口。如果是与多个第三方接口进行交互,那么就须要接口,不同的渠道各自实现。数据拜访层 数据拜访层,最好应用接口,比方数据库拜访,这种能够依据不同的数据库实现相应的接口向业务逻辑层提供服务。三.接口申请的类型 http1.0定义了三种申请办法:get,post,head http1.1新增了五种申请办法:options,put,delete,trace,connect Get:申请指定的页面信息,并返回实体。Get能够说是最常见的,它实质就是发送一个申请来获取服务器上的某一资源,资源通过一组http头和出现数据返回给客户。 Head:相似于get申请,只不过返回的响应中没有指定的内容,用于获取报头。 Post:向服务器提交数据。这个办法用处宽泛,简直所有的提交操作都是靠这个实现。 Put:从客户端向服务器传送的数据取代指定的文档的内容。Put与post都是向服务器发送数据,他们之间有一个重要的区别,put通常指定了资源的寄存地位,而post没有,post的数据寄存地位由服务器本人决定。 Delete:申请服务器删除指定的页面。删除某一个资源 Connect:http1.1协定中预留给可能将链接改为管道形式的代理服务器。 Options:容许客户端查看服务器的性能。返回服务器针对特定资源所反对的http申请办法。 Trace:回显服务器收到的申请,次要用于测试或者诊断。 四.接口标准和接口文档 接口标准的重要性 无规矩不成方圆,为了web/app开发人员与后盾接口开发人员更好的配合,所以咱们须要制订接口标准。接口,是Web/APP端与服务器端交互密不可分的环节,接口的规范性会间接影响单方对接过程中的效率和品质。本着疾速高效开发的目的性,防止对接过程中的错误率,接口该当有标准的束缚。 接口文档 后盾接口人员和挪动端开发人员之间的配合必定少不了接口文档这种利器!像中大型项目可能一个接口蕴含的字段就有上百个,如果没有接口文档,仅仅靠两个人口头交换,那预计一天就能搞定几个接口配合。 接口文档有哪几种模式哪? 1 Excel,Word等文档模式。 2 接口治理开源网站 接口文档和接口测试工具--apipost 它既能够测试接口也可依据测试的接口生成文档,有在线文档,离线文档如:htmlmarkdown和word格局文档,间接生成不必本人手写. ApiPost - 可间接生成文档的API调试、管理工具www.apipost.cn

October 21, 2020 · 1 min · jiezi

关于api:如何设计一个牛逼的API接口

在日常开发中,总会接触到各种接口。前后端数据传输接口,第三方业务平台接口。一个平台的前后端数据传输接口个别都会在内网环境下通信,而且会应用平安框架,所以安全性能够失去很好的爱护。这篇文章重点讨论一下提供给第三方平台的业务接口该当如何设计?咱们应该思考哪些问题? 次要从以上三个方面来设计一个平安的API接口。 一 安全性问题安全性问题是一个接口必须要保障的标准。如果接口保障不了安全性,那么你的接口相当于间接裸露在公网环境中任人践踏。 1.1 调用接口的先决条件-token获取token个别会波及到几个参数appid,appkey,timestamp,nonce,sign。咱们通过以上几个参数来获取调用零碎的凭证。 appid和appkey能够间接通过平台线上申请,也能够线下间接颁发。appid是全局惟一的,每个appid将对应一个客户,appkey须要高度窃密。 timestamp是工夫戳,应用零碎以后的unix工夫戳。工夫戳的目标就是为了加重DOS攻打。避免申请被拦挡后始终尝试申请接口。服务器端设置工夫戳阀值,如果申请工夫戳和服务器工夫超过阀值,则响应失败。 nonce是随机值。随机值次要是为了减少sign的多变性,也能够爱护接口的幂等性,相邻的两次申请nonce不容许反复,如果反复则认为是反复提交,响应失败。 sign是参数签名,将appkey,timestamp,nonce拼接起来进行md5加密(当然应用其余形式进行不可逆加密也没问题)。 token,应用参数appid,timestamp,nonce,sign来获取token,作为零碎调用的惟一凭证。token能够设置一次无效(这样安全性更高),也能够设置时效性,这里举荐设置时效性。如果一次无效的话这个接口的申请频率可能会很高。token举荐加到申请头上,这样能够跟业务参数齐全辨别开来。 1.2 应用POST作为接口申请形式个别调用接口最罕用的两种形式就是GET和POST。两者的区别也很显著,GET申请会将参数裸露在浏览器URL中,而且对长度也有限度。为了更高的安全性,所有接口都采纳POST形式申请。 1.3 客户端IP白名单ip白名单是指将接口的拜访权限对局部ip进行凋谢。这样就能防止其余ip进行拜访攻打,设置ip白名单比拟麻烦的一点就是当你的客户端进行迁徙后,就须要从新分割服务提供者增加新的ip白名单。设置ip白名单的形式很多,除了传统的防火墙之外,spring cloud alibaba提供的组件sentinel也反对白名单设置。为了升高api的复杂度,举荐应用防火墙规定进行白名单设置。 1.4 单个接口针对ip限流限流是为了更好的保护零碎稳定性。应用redis进行接口调用次数统计,ip+接口地址作为key,拜访次数作为value,每次申请value+1,设置过期时长来限度接口的调用频率。 1.5 记录接口申请日志应用aop全局记录申请日志,疾速定位异样申请地位,排查问题起因。 1.6 敏感数据脱敏在接口调用过程中,可能会波及到订单号等敏感数据,这类数据通常须要脱敏解决,最罕用的形式就是加密。加密形式应用安全性比拟高的RSA非对称加密。非对称加密算法有两个密钥,这两个密钥齐全不同但又齐全匹配。只有应用匹配的一对公钥和私钥,能力实现对明文的加密和解密过程。 二 幂等性问题幂等性是指任意屡次申请的执行后果和一次申请的执行后果所产生的影响雷同。说的直白一点就是查问操作无论查问多少次都不会影响数据自身,因而查问操作自身就是幂等的。然而新增操作,每执行一次数据库就会发生变化,所以它是非幂等的。 幂等问题的解决有很多思路,这里讲一种比拟谨严的。提供一个生成随机数的接口,随机数全局惟一。调用接口的时候带入随机数。第一次调用,业务解决胜利后,将随机数作为key,操作后果作为value,存入redis,同时设置过期时长。第二次调用,查问redis,如果key存在,则证实是反复提交,间接返回谬误。 三 数据标准问题3.1 版本控制一套成熟的API文档,一旦公布是不容许随便批改接口的。这时候如果想新增或者批改接口,就须要退出版本控制,版本号能够是整数类型,也能够是浮点数类型。个别接口地址都会带上版本号,http://ip:port//v1/list。 3.2 响应状态码标准一个牛逼的API,还须要提供简单明了的响应值,依据状态码就能够大略晓得问题所在。咱们采纳http的状态码进行数据封装,例如200示意申请胜利,4xx示意客户端谬误,5xx示意服务器外部产生谬误。状态码设计参考如下: 分类形容1xx信息,服务器收到申请,须要请求者继续执行操作2xx胜利3xx重定向,须要进一步的操作以实现申请4xx客户端谬误,申请蕴含语法错误或无奈实现申请5xx服务端谬误状态码枚举类: public enum CodeEnum { // 依据业务需要进行增加 SUCCESS(200,"解决胜利"), ERROR_PATH(404,"申请地址谬误"), ERROR_SERVER(505,"服务器外部产生谬误"); private int code; private String message; CodeEnum(int code, String message) { this.code = code; this.message = message; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; }}3.3 对立响应数据格式为了不便给客户端响应,响应数据会蕴含三个属性,状态码(code),信息形容(message),响应数据(data)。客户端依据状态码及信息形容可疾速晓得接口,如果状态码返回胜利,再开始解决数据。 ...

October 16, 2020 · 1 min · jiezi

关于api:干掉PPT现场编码的职级晋升答辩你参加过么

摘要:研发考究的是真本事,是骡子是马咱们还得代码上见真章。最近这小半年的工夫,凭借对各种API的奇妙利用,我从一个差点被淘汰的“前浪”变成了公司人人尊敬的技术委员会副主席,工作思路也从“苦搬砖”缓缓转变成“用巧劲儿”。果然,今人诚不欺我,“学会借势,能力青云直上。” 上期回顾:《太秃然了,老板要我一周内检测并导入一万个小时的视频》 9月底,公司开始了每年一度的职级降职问难,我往年也从选手变成了评委。当上评委才发现,这活儿也真是不好干,上百人的研发团队大家都是一起撸过码的交情,给谁过不给谁过这个咋判断呢? HR下发告诉后,各路选手都开始筹备资料了,很多人交上来一份PPT,花团锦簇有之、平平无奇也有之。咱是个粗人,看PPT识人这种事儿还真是不适宜我。那应该怎么做呢?俗话说,文无第一武无第二,研发考究的是真本事,是骡子是马咱们还得代码上见真章。 软件研发行业是一个疾速倒退与变动的行业,如果跟不上趋势,编程能力再强也会被时代淘汰。正好,公司最近打算将技术架构逐渐过渡降级到微服务的架构模式,我能够出题让大家现场编码部署一个微服务利用。 现场出题、现场编码,最好能提供一个对立的开发环境,并且我能随时看到大家的编码进度和状况,华为云提供的线上编码工具CloudIDE就非常适合。 华为云CloudIDE是DevCloud的云端开发环境服务,向开发者提供按需配置、疾速获取的工作空间(蕴含编辑器和运行环境),反对实现环境配置、代码浏览、编写代码、构建、运行、调试、预览等操作,并反对对接多种代码仓库。通过CloudIDE,能够疾速开发、部署微服务。 思考到很多参评人员对CloudIDE还不相熟,我提前整顿并提供了一份CloudIDE实例创立查问的利用示例。 【对CloudIDE实例进行治理】包含创立、启动、进行、删除IDE实例,以及查问IDE实例列表等操作示例。 一、创立IDE实例在API Explorer中点击CloudIDE。 目前反对CloudIDE接口调试的区域只有“华北-北京四”,并且在此区域中可收费创立arm类型的IDE实例。 首先,咱们来看调用这个API都须要哪些必填参数。  org_id:组织id(对应华为云账号的domainId) 获取domainId。账号id即domainId。  cpu_memory: cpu规格.arm架构反对4U8G,x86架构反对1U1G,2U4G,2U8G  display_name:实例名。  pvc_quantity:PVC规格 5GB|10GB|20GB  refresh_interval:实例的生命周期  stack_id:技术栈ID 除了以上必填参数外,还能够选填参数arch: cpu架构 x86|arm。这里抉择了arm架构(收费创立IDE实例)进行调试。 CreateInstance调试胜利后,返回的响应体可对照“返回参数”。 通过浏览器拜访返回参数中的link地址,可间接关上IDE实例,进行编码开发。 响应后果中的result.id可暂存,即后续当中的instance_id。 二、查问IDE实例列表点击ListInstances,间接调试即可 三、启动IDE实例instance_id可通过ListInstances返回的响应参数获取,instances.items.id即instance_id;或依据CreateInstance返回的响应体获取,result.id即instance_id。 四、进行IDE实例进行IDE实例操作步骤如下图所示。 五、删除IDE实例删除IDE实例操作示意如下图。 往年的升级评审分为了工作成绩汇报和编码能力评审2个环节,咱们对立提供线上开发环境,编码考试十分顺利,大家对降职后果也示意心悦诚服。在公司级会议上,人事部门的老大特意示意了感激,说我在人员考核治理中做到了无效翻新。看起来,我这个技术委员会副主席是越来越称职了。 理解更多华为云API信息:收费下载翻新减速利器《华为云API精选手册》 点击关注,第一工夫理解华为云陈腐技术~

October 15, 2020 · 1 min · jiezi

关于api:免费的网页截屏API有哪些

介绍网页截屏巨匠应用真正的Chrome浏览器捕获像素完满的屏幕截图,咱们的外围服务托管在阿里云与腾讯云之上,API人造分布式、高可用。 起步您能够应用 GET 或者 POST 向上面的入口发动一个网页截屏申请。 https://www.screenshotmaster.com/api/v1/screenshot例子如果要获取百度首页的图片 您能够将 baidu.com 增加到 url 参数中以发动申请。 https://www.screenshotmaster.com/api/v1/screenshot?url=baidu.com认证增加 token 参数在您的API申请中以取得认证。 https://www.screenshotmaster.com/api/v1/screenshot? url=baidu.com &amp;token=YOUR_API_TOKEN参数以下是您能够在申请中增加的所有参数。 须要留神的是在发动 GET 申请时您务必将所有参数进行URL编码 参数类型默认值形容tokenstring''您的API tokenurlstring''须要截图的URLwidthint1280浏览器宽度 单位是像素heightint800浏览器高度 单位是像素full_pageinteger0如果传1 则会进行网页长截图browser_borderinteger0如果传1 则会应用内置浏览器边框进行图片渲染colorstringE9D460应用内置浏览器边框进行图片渲染时能够制订背景色彩freshinteger0如果传1 则会从新进行截图 (而不是应用缓存的截图)outputstring'image'您能够抉择应用 json 作为输入格局, 或者抉择image 则会输入原生图片格式delayint500在截屏之前须要期待多少毫秒。devicestring'pc'应用的设施 pc示意桌面设施 mobile示意手机设施 table示意平板设施cookiesstring''要在浏览器中设置的cookie。如果发送多个cookie,请应用;to宰割他们。例子: cookie1=myValue;cookie2=myOtherValuezonestring''区域 默认是国内线路 对国内网站进行截图举荐应用 若要对国内站点进行截图 能够传入 hk则会成果更佳谬误如果申请的HTTP状态代码返回4xx 或者 5xx 此时返回的数据将会带有一个msg字段示意谬误起因。上面是当应用了谬误token时返回的例子。 { "code": 422, "data": [ ], "msg": "token不正确"}参考资料 1.截屏巨匠API文档

October 6, 2020 · 1 min · jiezi

关于api:支持API幂等操作

背景平台有局部 API 须要保障接口幂等性, 避免业务频繁刷 API 造成资源节约,或者不小心重发消息影响业务。 名词解释接口的幂等, 指的是一个操作反复执行N次失去的后果(副作用)与执行一次是相等的。比方在 HTTP 协定中,GET申请,会失去同样的数据。然而对于 POST 和 PATCH 的接口, 每次申请动作失去后果都是不同, 这里是不幂等的, 而有的是时候对接口有幂等的要求。 比方银行的转账, 因为各种起因可能同一个申请会被屡次发送,然而后果只会胜利转账一次,其余转账不会失效。 解决方案目前业界有绝对成熟的解决方案, 包含 乐观锁,乐观锁,防重表和应用 Token。上面别离介绍以上4种解决方案。 乐观锁流程: 申请过去的时候开启事务, 对查问事件(比方订单)加锁判断事件是否合乎执行条件在全副执行完后, 提交或回滚毛病: 执行工夫长, 乐观锁容易锁住整表,导致服务不可用问题。 乐观锁实现:通过版本号的形式,在更新事件的时候锁表 (大部分工夫不会锁表), 比方: UPDATE table set usage=usage+1, version=version+1 where uuid = XXX and version = XXX 即便多个申请过去, 因为进来的 version 是雷同的, 然而 DB 中的版本号曾经被更新, 批改条件不成立, 也就是说不会被屡次更新。 毛病: 应用 主键 或 惟一索引 来更新, 应用行锁而不是表锁。 防重表流程: 建设一张防重表, 应用事件 ID (比方订单号) 作为惟一索引在发动申请时依据事件 ID 在 防重表 中新增一条记录因为是惟一索引,重发的申请增加记录不会胜利, 第一个进入的事件能够被执行(事件实现后,能够删除防重表的记录) ...

October 1, 2020 · 1 min · jiezi

关于api:分享ApiPost如何自定义加密方法

在做接口测试的时候,个别有的公司会给传递的参数进行加密。apipost能够反对自定义参数加解密办法在apipost中有一个预执行脚本咱们能够在这里定义本人的须要加密的参数值,而后调用这个参数值进行接口申请 这里咱们定义了一个apt.func,加密办法类型,输出的加密后的值。而后咱们还须要设置一个全局变量获取这个办法的值。这样咱们的参数加密就弄好了。而后调用这个全局变量发送申请查看一下后果。对于申请发送的时候如何加密参数就实现了。

September 30, 2020 · 1 min · jiezi

关于api:分享-如何做好接口测试

1、首先咱们要明确什么是一个api申请 在对一个接口进行申请发送的时候,咱们须要晓得它的url,申请形式get还是post。post申请的话咱们还须要晓得,它要传递什么参数。比方:你去饭店吃饭你间接要一瓶可乐,服务员就间接那给你了。你要是点菜,服务员就须要写一个菜单,而后做好了在给你端上来。这就是get申请和post申请的不同。服务员就是这个接口,你提出的申请它基于回应。这就是一个申请是如何实现的。 发送一个get申请关上ApiPost咱们用http://www.baidu.com测试一下g...。3.发送一个post的申请 下面说过post申请不同于get申请,post申请会在body外面传递对应的参数能力取得想要的申请。这里post申请就申请胜利了。 4.如何实现用户登录之后的查问操作 首先咱们先进行登录的接口测试,输出url,再在body外面输出账号和明码。这里实现了登录,而后咱们再去进行查问操作。发现短少一个token值,这个值怎么取得那,就是咱们登录之后服务器返回给咱们的那个token值。咱们只须要把这个服务器返回来的"token": "a9c5238c2a"输出到查问的body外面就能够进行失常的查问操作了。而后就实现了用户登录之后进行查问的操作了。 5.如何使登录和查问操作流程化测试 咱们曾经设置好了登录接口和查问接口,只须要关上apipost中的流程测试而后把登录和查问增加进去运行就能够了。而后流程测试就实现了 这里应用的是一款国产的接口测试工具apipost,全中文应用起来也很不便简略。这里给你们分享一下下载地址。ApiPost - 可间接生成文档的API调试、管理工具www.apipost.cn

September 28, 2020 · 1 min · jiezi

关于api:从零开始搭建完整的电影全栈系统六影片Api示例说明及应用

@TOC 前言<font color=#999AAA >该Api提供影片列表、影片详情以及用户注册、登录等性能。</font> 一,影片相干接口1,影片相干字段阐明: `id` int(11) NOT NULL, `vod_title` varchar(255) NOT NULL COMMENT '视频名称', `vod_sub_title` varchar(255) DEFAULT NULL COMMENT '视频别名', `vod_blurb` varchar(255) DEFAULT NULL COMMENT '简介', `vod_content` longtext COMMENT '具体介绍', `vod_status` int(11) DEFAULT '0' COMMENT '状态', `vod_type` varchar(255) DEFAULT NULL COMMENT '视频分类', `vod_class` varchar(255) DEFAULT NULL COMMENT '扩大分类', `vod_tag` varchar(255) DEFAULT NULL, `vod_pic_url` varchar(255) DEFAULT NULL COMMENT '图片url', `vod_pic_path` varchar(255) DEFAULT NULL COMMENT '图片下载保留门路', `vod_pic_thumb` varchar(255) DEFAULT NULL, `vod_actor` varchar(255) DEFAULT NULL COMMENT '演员', `vod_director` varchar(255) DEFAULT NULL COMMENT '导演', `vod_writer` varchar(255) DEFAULT NULL COMMENT '编剧', `vod_remarks` varchar(255) DEFAULT NULL COMMENT '影片版本', `vod_pubdate` int(11) DEFAULT NULL, `vod_area` varchar(255) DEFAULT NULL COMMENT '地区', `vod_lang` varchar(255) DEFAULT NULL COMMENT '语言', `vod_year` varchar(255) DEFAULT NULL COMMENT '年代', `vod_hits` int(11) DEFAULT '0' COMMENT '总浏览数', `vod_hits_day` int(11) DEFAULT '0' COMMENT '一天浏览数', `vod_hits_week` int(11) DEFAULT '0' COMMENT '一周浏览数', `vod_hits_month` int(11) DEFAULT '0' COMMENT '一月浏览数', `vod_up` int(11) DEFAULT '0' COMMENT '顶数', `vod_down` int(11) DEFAULT '0' COMMENT '踩数', `vod_score` decimal(3,1) DEFAULT '0.0' COMMENT '评分', `vod_score_all` int(11) DEFAULT '0' COMMENT '总评分', `vod_score_num` int(11) DEFAULT '0' COMMENT '总评人数', `vod_create_time` int(11) DEFAULT NULL COMMENT '创立工夫', `vod_update_time` int(11) DEFAULT NULL COMMENT '更新工夫', `vod_lately_hit_time` int(11) DEFAULT NULL COMMENT '最初浏览工夫', `vod_lately_ip` bigint(255) DEFAULT NULL COMMENT '最初一次浏览的客户端ip'2,影片列表页接口URI 地址:https://api.shipinbofang.com/...申请形式:GET或者POST传入参数: ...

September 27, 2020 · 3 min · jiezi

关于api:API进阶之路太秃然了老板要我一周内检测并导入一万个小时的视频

摘要:假期完结后回来下班,走进电梯都有一种特地的感觉,电梯那个植发广告里的大哥看我的眼神如同和之前不太一样…上回说到,老板处分7天带薪假,我就回家游玩了几天,顺便还帮兄弟发不脱当了一回“AI大神”。(回顾:《没有AI工程师也能做OCR文字辨认》) 假期完结后回来下班,走进电梯都有一种特地的感觉,电梯某植发广告里的大哥看我的眼神如同和之前不太一样…到公司开了第一个会,原来,那个眼神像是一个预示。 老板在会上说,最近视频团队谈了个单干,和另一个短视频平台进行内容共享,这样能够为咱们的视频网站提供将近1万个小时的视频内容,心愿研发来反对导入视频。 我心想:“这个简略呀,不就是导入视频么?写个脚本不就行了。”我给了老板一个“交给我”的眼神,老板回了我一个“看好你”的笑容。就这么着,这事儿就落到我了头上。当初想想,可能是我回北京的时候,没给脑子买票,人回来了,脑子落在老家… 会后我找短视频经营老大对需要,他给提了3个点: 第一:导过去的视频要全副加上咱们的水印;第二:要导入的视频格式和咱们当初网站要求的格局不相符,所有视频都要转格局;第三:要对导过去的视频内容做检测,避免有违法违纪的内容呈现。最初他还补了一句:“最好能在一周内实现,老板想要尽早上线。” 你在逗我么?一万个小时的视频,要转格局、加水印还要做内容平安检测,一周实现?我忽然有点明确电梯广告那大哥的眼神是啥意思了… 批量转格局和加水印倒是好解决,然而这个平安检测...一边烦恼得直薅头发,一边习惯性逛华为云找灵感。 咱们之前用过图像内容检测API,能够用来检测图片是否有违法违纪的内容,然而视频貌似用不了。如果能把视频每一帧都截图,是不是就能够检测了?持续找,果然有一个“视频截图API”! 先用视频截图API设置主动截图的工作,再用图像内容检测API来判断是否有内容危险,同时利用媒体解决MPC提供的转码模板和水印模板来解决打水印和转格局的问题。完满解决! 提交视频截图工作的形式如下: 前提条件获取须要创立截图工作区域的我的项目ID(获取我的项目ID)。明确须要创立截图工作所在的区域信息,并获取该区域的Endpoint(地区和终端节点获取)。调用OBS创立桶API创立用于存储截图文件的OBS桶,再调用OBS上传对象API将待截图解决的视频文件存储在OBS桶中。操作步骤步骤1:获取用户token。用于MPC接口时进行认证鉴权。 在“我的凭证”页面获取username、password、domainname、projectname,调用如下接口获取Token。 POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokensContent-Type: application/json{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", //用户名。 "password": "password", //用户登录明码。 "domain": { "name": "domainname" //用户所属的账号名称。 } } } }, "scope": { "project": { "name": "projectname" //项目名称。 } } }}如图所示,红框中的信息为获取用户Token。 步骤2:创立截图工作 1、发送一条POST申请。 POST:https://{endpoint}/v1/{project_id}/thumbnails 2、申请音讯头中减少“X-Auth-Token”,值设置为获取的用户token。 3、Request Body中传入参数如下: {"input": { "bucket": "example-bucket", "location": "region01", "object": "/mpc/input/sample.MP4"},"output": { "bucket": "example-bucket", "location": "region01", "object": "/mpc/output/ "},"tar": 1,"thumbnail_para": { "type":"DOTS", "dots":[2,4,6,8,10], "format":0, "aspect_ratio":1, "max_length":480 } } 4、申请响应胜利后,反馈截图工作ID。 ...

September 27, 2020 · 1 min · jiezi

关于api:分享ApiPost接口测试工具如何实现前后端接口联调

ApiPost有一个接口状态标记性能**别离对应着开发中、已实现和需批改。在前后端联调对接口的时候。咱们能够把开发这个我的项目的前后端退出到团队中,一起实现这个我的项目。输出对应的前后端的账号邮箱就能够造成一个团队了。 进去一个团队之后,点击我的项目,抉择正在开发的我的项目进入接口我的项目后端能够新建接口,而后测试接口是否失常,前端能够查看接口的返回值,而后实现前后端对接口的联调。前后端接口联调的时候,后端还在该接口的时候能够把状态设置为开发中。 开发实现后设置为已实现,前端人员就能够对已实现的接口就行申请发送,查看后盾返回的响应值数据,来联调接口实现前后端的接口对接。 前端发现接口不正确的时候,能够把接口状态改为需批改,后端人员一查看就晓得哪些接口设计谬误了。 前后端接口联调凋谢完之后,就能够通过分享我的项目而后生成接口文档。

September 25, 2020 · 1 min · jiezi

关于api:技巧-ApiPost操作设置

ApiPost设置介绍和作用一.默认申请超时工夫ApiPost默认设置的是25000毫秒,就是在25秒钟之内响应没有胜利的话就默认失败,咱们也能够自定义设置8秒或者10秒.二.默认申请Method(办法)申请办法次要有八大办法:get、post、put、head、delete、options、trace、connect。个别应用最多的是get和post两种办法:get:办法用来申请拜访已被URI辨认的资源。指定的资源通过服务器解析后返回响应内容。也就是说,如果申请的资源是文本,那就放弃原样返回。post: 办法用来传输实体的主体。尽管用GET办法也能够传输实体的主体,但个别不必GET办法进行传输,而是用POST办法。虽说POST的性能与GET很类似,然而POST的次要目标并不是获取响应的主题内容。这里默认的是post办法,也能够改为get、put、connect等办法 三.默认申请形式1.multipart/form-data:一个常见的 POST 数据提交的形式。咱们应用表单上传文件时,必须让 表单的 enctype 等于 multipart/form-data。 2…application/x-www-form-urlencoded:最常见的 POST 提交数据的形式了。浏览器的原生 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 形式提交数据。 3.application/json:作为申请头通知服务端音讯主体是序列化的JSON字符串。除低版本的IE,根本都反对。 4.text/xml:它是一种应用 HTTP 作为传输协定,XML 作为编码方式的近程调用标准。 四.自动识别申请参数的Mock变量个别放弃开启状态就能够了。 五.获取接口锁定状态这里主动获取接口状态,就是是否获取接口的状态,接口状态个别三种:开发中、已实现和需批改。六.发送后切换至“响应”标签发送后切换至“响应”标签是:在申请头、胜利响应示例及文档页面,发送申请之后,间接返回响应页面。七.敞开标签时,删除本地缓存 因为接口数据缓存在本地,接口数据量比拟大的时候应用apipost的时候就会变得卡顿,而后能够清理缓存就能够分明应用apipost卡顿感。

September 23, 2020 · 1 min · jiezi

关于api:大咖布道丨证券行业规模化敏捷和核心能力演进

摘要:本文以证券行业的某头部企业的重点产品为例,探讨基于行业特色,同时脱离现成框架的规模化麻利施行的实际总结。说到规模化麻利,大家通常马上会想到市场上的各种支流框架。诚然,现成的框架能与企业现状较好联合的时候,基于框架的施行是省时省力的。 然而,实际中咱们常常会遇到的情景是,企业的状况变幻无穷,往往跟框架的假设相去甚远,有时候利用现有框架代价微小,甚至产生削足适履的成果。本文以证券行业的某头部企业的重点产品为例,探讨基于行业特色,同时脱离现成框架的规模化麻利施行的实际总结。 01咱们眼中的规模化麻利如何在产品研发中凝聚力量以疾速捕获市场机会、使之转化为业务收益,并继续地做到这一点,是很多大型组织须要解决的问题。具体而言,简单产品开发中, 如何让独特的指标凝聚多个麻利团队?多个麻利团队如何合作?如何疾速地、继续一直地推出新的产品性能?如何管制合作的复杂度以升高治理老本,并缩小零碎瓶颈?如何放弃透明性,使产品研发的过程可见,使危险和阻碍容易浮现,并被移除?如何一直演进本人以适应环境的变动?在咱们看来,规模化麻利的实质是利用精益、麻利的思维和实际来寻求这些问题的解决方案。 02从五个外围能力看规模化麻利实际规模化麻利可能有有数的分析视角。咱们认为,从具体实际落地的角度,规模化麻利最依赖于五种外围能力: 指标对齐,节奏,同步,依赖解耦,继续改良 咱们能够基于这些外围能力衍生、演进实际,使组织可能勠力同心、疾速应变。本节将以某重点产品为例,介绍基于这五种外围能力实际中如何帮忙产品开发。 图 1 规模化麻利的五种外围能力 下图展现了所述产品上下文。自外而内的两层椭圆中,外层示意产品所属投资组合,内层示意本文本产品范畴。产品外部蕴含多个绝对独立的利用,每个利用设有Scrum Master (SM)和Product Owner (PO),图中的两个利用作为示意。各利用均基于Scrum形式搭建团队,每个利用包含若干专职、固定的Scrum小组。 值得注意的是:本产品内所包含的利用往往同时被投资组合中的其余产品所依赖,这造成了简单的相互依赖关系,造成了产品开发流动的一个要害制约因素。 注:下文所提到的“Scrum Master”(SM)、“Product Owner”(PO) 均为各利用级别角色,他们通常负责多个Scrum团队。 图 2 产品范畴及次要流动 (产品合作会:各利用PO主导、合作定义优先级 打算合作会:各利用SM主导、下一迭代排期,兼上一迭代回顾 接口对齐点,在迭代开始之前确定相依赖产品之间的接口) 2.1指标对齐你大略听过这个故事: 工地上三个石匠在繁忙。路人问,你们在做什么?第一个石匠说,我在砌墙。第二个说,我在挣钱养家。第三个说,我在建一座大教堂。 人们经常赞叹第三个石匠的格局,但第一个石匠可能过于被“顺便”鄙视了。确实,咱们心中应该有咱们在建筑的大教堂,那是使命所在。然而,眼前要砌的这堵墙是否该是以后关注的焦点? 从指标对齐的角度而言,咱们须要基于长期业务指标,但更要可能: 将作为近景的大指标合成为短期的小指标,使相干人和团队的“小指标”指向统一,使相干团队在实现小指标的过程中各自为政。长期的大指标给咱们方向,短期的小指标让咱们聚焦。大、小指标的对齐让咱们可能勠力合作,而后能力继续疾速交付。 产品的指标对齐由以下三个要害流动驱动。 图 3 三个要害流动驱动产品指标对齐 产品合作会及其先导流动 基于业务价值并思考相互依赖关系,产品各PO共创进行需要拆分和优先级排序(必要时业务裁决)。产品合作会输入下一迭代所需排期的需要列表。 产品合作会是一个线下与线上联合的流动,绝大部分实质性工作产生在会议之前。PO们在会议之前须要深入分析需要,并与相干方充沛沟通;会议更多是一个查漏补缺的检查点。 表1 产品合作会 (注:每个迭代两周工夫;W: 以后迭代第一周;W+1: 以后迭代第二周;W-1: 迭代开始前的一周…其余类推。) 打算合作会及其先导流动 基于产品合作会产出,产品各利用的SM合作排期。(如前所述,“SM”是一个利用的Scrum Master,背地可能有多个Scrum小组。) 合作排期实质上是从传统Scrum打算会议抽取出了产品级的打算工作(之后Scrum小组会在迭代打算会中各自进行具体打算)。 与产品合作会相似,绝大部分实质性排期工作同样产生在会议之前的线下沟通中。 表2 打算合作会 接口对齐点 基于打算合作会产出,各产品架构定义相互依赖的接口;迭代开始之前(W-1周)确定相互依赖的各利用接口。这个流动是迭代打算会的一个跟进,也是迭代中联调工作的序章。 表3 接口对齐点 能够看到,此产品的对齐机制联合了大量例行流动和大量线下沟通:产品合作会与打算合作会相似,会议作为对齐点,但实质性工作大部分都产生在线下;接口对齐点更是仅仅作为一个检查点存在。这与各通用的麻利框架有显著区别,比方SAFe、LeSS都在不同水平上强调大规模个体打算流动。 之所以有这样的不同,背地起因有二:第一,该产品所属投资组合是多个相关联产品的集群,多个价值流交织;产品所依赖的很多利用同时服务于投资组合内的其余产品,这与SAFe或LeSS典型场景中的惟一解决方案显著不同。第二,产品开发中宽泛应用的合作方(外包)员工目前还不能深刻参加到晚期需要流动中。 在这种简单场景下,大规模个体打算很难保障效率。相形之下,本产品所采纳的对齐形式以去中心化的、渐进式的打算形式为根底,以集中的检查点为制约,对相似情景有参考价值。 2.2 节奏与同步如果你加入过拔河比赛,你可能晓得,站在旁边喊号的人很大水平上决定了较量输赢。喊号实际上是对节奏的管制。在较量中利用稳固节奏制作冲击波,是获胜的一个窍门。 ...

September 18, 2020 · 1 min · jiezi

关于api:API-进阶之路做-OCR-文字识别谁说必须要有-AI-工程师

摘要:有些性能还真不能光凭本人的直觉和意识,来自一线的声音才是最实在的用户需要。比方说名片录入的需要。在公司技术委员会副主席这个地位上干了有几个月了,期间,我一方面给研发团队整顿各种文档资料,做技术积淀;一方面给市场/经营帮了几次忙,用技术解决业务问题。上周又解决了一个业务难题,预计是思考到升职加薪也不能太频繁,老板就处分了我7天带薪假期,让我本人安顿。 (上集故事请查看:《破圈,用一个API代替10人内容团队》) 程序员的工作工夫不是996就是007,这忽然有了假,干点啥去呢?疫情期间也不能进来浪,有日子没回老家了,回去看看吧。 躺在老家院子里的摇椅上,我妈养的中华田园犬在身边绕来绕去,晃晃悠悠地吃了睡睡了吃,日子尽管无聊,倒也难得安闲。 叮~同样是做研发的高中同学发不脱同志给我打电话,约我早晨去学校旁边吃烧烤。说走就走,到了中央我看见这小子,紧了紧头上的帽子,连忙坐下。 几杯酒下肚,聊起大家的近况,发不脱示意出了对我的艳羡,“真艳羡你在北京工作,开发的都是些有意思的产品,不像我,待在老家,每天就是围绕销售的需要,让干啥就干啥,切实是没劲,一点成就感都没有。就比方最近销售提了个需要,让我给做一个自动识别名片的性能,你说这玩意能有啥用?” 自动识别名片?当初谁还用名片,不都是微信分割了么,最多也是弄个小程序,一扫码就有本人的个人信息了,多不便。 我说完,发不脱也说:“对啊,当初谁还用名片,所以这个需要销售那边一个月里提了三四次,都被咱们给回绝了,做了也没价值。” 正说到这儿,我看着隔壁桌来了2个小伙子,俩人不太熟的样子,一见面又是握手又是寒暄,最初替换了名片才坐下。这名片难道还真有市场? 看完这一幕,我忽然有了点想法,跟发不脱说,还是帮销售实现这个需要吧,又不麻烦,几行代码就解决了,万一人家有用呢。 没想到发不脱差点跟我急了:“几行代码?你闹呢?文字辨认欸,咱们又没有AI工程师,没那个技术能力!” 这还不好解决么,说着我掏出手机,关上浏览器进入了华为云API Explorer,搜寻“名片辨认”,找到对应API,依照接口阐明把调用形式发给了发不脱,可不就几行代码的事么。 过来了大略10来天,我曾经回公司下班了,发不脱给我发信息:“哥们,谢谢你啊,这个名片辨认的性能上线之后才发现,销售们每天能发出来一百多张名片,以前要手动录入CRM,当初扫完就能间接录入了,老板因为这个还给我涨工资了呢,大家还打听我什么时候学的AI,哈哈。” 通过这件事我也意识到,有些性能还真不能光凭本人的直觉和意识,来自一线的声音才是最实在的用户需要。如果你也须要名片辨认这个性能,“名片辨认API”调用形式如下,拿走不谢。 步骤一:开明服务进入文字辨认OCR主页,单击“立刻应用”,进入文字辨认Console控制台。抉择服务所在的区域。零碎默认显示“华北-北京四”,依据各服务的部署区域抉择对应区域,开明与调用的服务必须在同一个区域。在左侧服务列表中单击须要应用的服务,单击“开明服务”。 服务开明胜利后,界面显示已开明的服务。 步骤二:调试服务通过API Explorer可进行疾速调试。 在API Explorer点击文字辨认。 咱们先看看调用这个API都须要点啥: 看上去获取到名片图片的64位编码或者url就能调用了。 举个栗子接下来咱们就拿“诸葛亮”的名片调试一下。 1、 获取名片图片的64位编码:把“诸葛亮”放进Chrome浏览器里,按F12,在弹出窗口点Sources,选中“诸葛亮”的名片文件,这样就能看到名片的64位编码了。 2、 双击选中图片的base64编码信息,“Ctrl+C”复制,而后粘贴到 API Explorer里,点击“调试”,响应后果里就把“诸葛亮”的名片信息都辨认进去了~(留神不可应用鼠标右键形式进行复制) 理解更多华为云API信息:“收费下载翻新减速利器《华为云API精选手册》 【拓展浏览】 【API进阶之路】因为不会创立云服务器,我被实习生摆了一道【API进阶之路】前浪的绝地出击与自我证实【API进阶之路】甩锅大会上,我是如何绝地求生的【API进阶之路】一个技术预案,让老板当场喊出了“奥利给”【API进阶之路】万万没想到,一个技术计划帮实习生追到了经营妹子!【API进阶之路】一个技术盲点,差点让整个我的项目翻车【API进阶之路】老板给我涨薪30%!如何通过SDK接口搞定千万级流量直播【API进阶之路】半天搞定百万条手机号归属地查问,竟影响了公司策略方向!【API进阶之路】无奈设想!大龄码农的硬盘里有这么多宝藏【API进阶之路】高考要考书面语?一场10w+刷屏流动是如何用多模态评测API做进去的【API进阶之路】帮公司省下20万调研费!如何巧用情感剖析API实现用户偏好调研【API进阶之路】逆袭!用关键词抽取API搞定用户需要洞察【API进阶之路】破圈,用一个API代替10人内容团队【API进阶之路】用API打造一条自动化内容生产流水线——流动举荐——华为云曾经成为寰球次要云服务供应商,在华为云上凋谢了2400+ API,包含计算、存储、网络、应用服务、软件开发服务、视频、数据库、EI智能等74+产品,如何利用这些丰盛弱小的API疾速开发本人的利用和服务,成为大家关注的热点。 华为云API学习赛,为入门初学者量身定制的学习平台,以赛带学,学以致用。无需代码,只需下载体验模板,按操作文档操作即可实现作品。参赛、邀请都有丰盛奖品,还有机会拿P40 5G手机超级激励!!点击下方链接即可报名加入。 API入门学习赛·AI人脸识别 报名地址奖项设置API入门学习赛·探险寻宝之旅 报名地址奖项设置点击关注,第一工夫理解华为云陈腐技术~

September 18, 2020 · 1 min · jiezi

关于api:分享-Apipost使用技巧

前言随着web技术的倒退,特地是前后端拆散的架构主键成为支流,咱们后端程序员调试的时候不再依赖页面去操作,而是间接调试接口。对于没有权限管制的GET接口而言,这是一个十分轻松的工作,然而对于有权限的或者应用了其余办法(POST,PUT,DELETE等)的Rest接口,事件就不那么美妙了,还好有apipost这个神器可能帮咱们解决这些问题,根本的应用我就不讲了,这一块网上的教程很多。这里次要提一些相对来说比拟高级的用法。 配置环境设置这其实也算是一个比拟根本的性能了,因为跟后续的操作相干,所以也提一下。 当初咱们开发的测试环境是3套,别离是开发、测试、预发(或者线上环境)。刚好apipost有一个环境设置,咱们间接能够在环境设置里,把这三套环境配置好,应用的时候间接抉择对应的环境就能够应用了。放在这个例子里就很直观了,咱们配置相应的3套环境就能够了,如下图所示设置好三个环境之后如图: 开始调用环境抉择环境,这里是测试环境,而后咱们调用设置的环境变量,如图:这里的咱们要调用测试环境的url只须要在环境外面定义url的变量名,而后输出测试环境的url地址,在用{{变量名}}就能够间接调用了

September 17, 2020 · 1 min · jiezi

关于api:分享-ApiPost如何使用mock测试

1.Mock 是什么有一个接口,通过参数id的不同返回的数据不同,当初数据库有多条数据,作为测试人员你如果用手输出查看这个接口的返回后果就很麻烦费劲。 咱们就能够调用apipost外面内置mock字段变量 apipost内置的mock字段变量能够随机生成你须要的变量值。这里咱们须要随机生成一个姓名 咱们调用apipost外面内置的mock变量参数@cname()。因为apipost是国人本人的产品所以前面的解释也是中文的,对那些英文不好的人员就很友善。 而后间接把@cname()复制到参数值外面就能够调用了。 咱们须要多个申请就能够在流程测试中屡次运行

September 16, 2020 · 1 min · jiezi

关于api:分享-使用ApiPost模拟手机实现请求发送

一、ApiPost中有专门针对于模拟手机申请发送的参数首先咱们新建一个接口,拜访www.baidu.com而后点击发送而后咱们在创立一个接口,这个是拜访挪动版的www.baidu.com不过这里须要设置一下头部参数user-agent在抉择参数值,这里ApiPost本人给我了两个参数值Android版本:Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; BLA-AL00 Build/HUAWEIBLA-AL00) Chrome/57.0.2987.132 Mobile Safari/537.36iOS版本:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36这样就实现了挪动端的接口测试了 二、设置User Agent的起因Web端和挪动端它们发送申请的时候申请是不一样的,如何能力更好的去实现挪动端的接口测试,就须要去理解User Agent。当初很多网站都同时有web端和挪动端,然而用web浏览器和挪动端浏览关上它们展现的界面并不是一样的。不一样的起因是User Agent的不同。User Agent中文含意用户代理,简称为UA。它是一个非凡字符串头,使得服务器可能辨认客户应用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等 Web端罕用的User Agent: Chrome目前应用的User Agent:MAC:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36Windows:Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13Firefox目前应用的User Agent:MAC:Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:49.0) Gecko/20100101 Firefox/49.0Windows:Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070309 Firefox/2.0.0.3Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070803 Firefox/1.5.0.12挪动端罕用的User Agent: ...

September 15, 2020 · 1 min · jiezi

关于api:分享-接口测试和接口文档生成工具ApiPost30版本

ApiPost是一款国产的接口测试工具和接口文档生成工具,这一期介绍如何生成接口文档。 下载地址:https://www.apipost.cn/ ApiPost对于后端来说有一个很棒的单个接口文档生成性能和多个接口我的项目文档生成性能 首先咱们进行单个接口测试 拿到正确的响应后果之后点击胜利响应示例 在点击从现有响应后果导入,会把申请到的后果导入到外面去 而后点击导出字段它能够把利用后果中的以键值对的显示导出 之后咱们点击分享性能 能够在分享外面抉择分享链接无效时长和是否开发或者输出明码查看 而后把生成的地址发送给须要接口文档的人,他就能够查看这个接口文档了 如果是我的项目和多个接口怎么生成在线文档那,咱们能够在我的项目中间接分享我的项目 还有接口目录分享,新建一个目录把须要分享的接口拉进这个目录右键而后抉择分享就能够进行实现了 最好最重要的一点就是分享目录的时候肯定要保留,不然分享的时候是空的或者显示的货色不残缺。

September 11, 2020 · 1 min · jiezi

关于api:分享接口测试工具ApiPost30版本对于流程测试和引用参数变量

本期解说一下如何应用ApiPost进行接口自动化测试 ApiPost对于接口流程测试有一个环境变量设置,这里的环境变量设置是对于测试环境和正式环境能够很好的辨别,只须要把正式环境和测试环境不同的url创立成不同的环境变量应用的时候调用他们就能够明确的分辨了。 首先是创立环境变量 点击新建环境,输出环境名,这里能够用正式环境和测试环境来命名或者项目名称,咱们这边用的是测试环境的名称,而后是编写变量名和变量初始值,变量名依据本人喜好和爱好定义,变量初始值个别是测试的首页url,或者是你在测试多个接口的时候url中雷同的字段,如:http://47.95.15.38:8000/login http://47.95.15.38:8000/get/user,他们的url雷同字段是http://47.95.15.38:8000变量初始值就能够填写为http://47.95.15.38:8000 环境变量配置好之后就是对环境变量的援用,apipost援用环境变量是在申请的url中{{}}加环境变量名,如:{{ceshi_url}}/login {{ceshi_url}}/get/user. 这里咱们实现一个登录和登录之后查问的流程操作. 首先咱们登录之后会获取一个token,然而token这个值每次登录之后在申请都会扭转,这就是一个参数变量.怎么调用这个变量那,apipost用一个预执行脚本和后执行脚本. 咱们在登录之后能够在响应外面查看这个token 之后点击后执行脚本,在右侧抉择设置一个环境变量 而后编写变量名,和定位token这个变量在响应文本中的地位,apipost固定定位申请文本的格局response.json.token或者token的下级.token 如:apt.variables.set(“token_a”, response.json.result.token); 这个就是response中的json中的result的token等于token_a 之后咱们进行登录之后的查问操作,因为后面咱们曾经定义了登录之后的token值等于token_a,所以间接在body援用token_a,援用格局为{{token_a}},这样咱们在每次登录申请之后,就不必频繁的去更改token了 而后进行流程测试,把曾经写好的接口脚本抉择进去点击运行就能够进行流程测试了

September 10, 2020 · 1 min · jiezi

关于api:分享接口测试ApiPost

接口测试工具ApiPost应用教程ApiPost是一款国产的接口测试工具 下载地址:https://www.apipost.cn/这里首先须要登录注册 登录之后须要新建一个我的项目,这个我的项目是针对于团队单干应用的,现阶段apipost这款软件必须要新建一个我的项目,集体应用就建设一个本人的我的项目,这边是集体应用建设一个叫测试的我的项目。上面的合作人员是针对于公司用户团队同时开发一块我的项目的时候,联调接口应用的,这里集体应用不须要管 创立完我的项目之后,在项目管理点击我治理的我的项目,我参加的我的项目是针对于公司模式的团队单干造成的我的项目,在抉择测试这个我的项目点击进入该我的项目接口进入接口测试 在ApiPost中的APIs中能进行接口测试 这里拿www.baidu.com和www.hao123.com来举例get申请 首先抉择申请办法get、post还是其余等办法,个别web网页就get和post申请两种,这里抉择get申请 这边是申请的后果,能够查看响应构造,头部信息,响应头和Cookie数据 这里一个简略的get申请就胜利实现了! 简略吧~~快来试一试。

September 9, 2020 · 1 min · jiezi

关于api:在SAP-WebClient-UI里显示倒数计时的UI

First let’s have a look at what is achieved: Once you click work center “Jerry count down”, the count down is displayed with a small animation. The steps to build this application are almost the same as Step by step to create Bar Chart in Webclient UI. (1) Create a new WebUI component with a view main.htm: Paste the following source code for the created view: ...

August 29, 2020 · 2 min · jiezi

关于api:建设开发者生态6项华为API管理原则落地

摘要: 为了向开发者提供良好、统一、稳固的华为API的体验,华为通过明确“API治理六项准则”,来反对开发者生态建设。一个不凋谢的组织,会缓缓成为一潭僵水,一个关闭的零碎,能量最终会耗尽,在产品开发上,同样须要凋谢,需紧紧围绕业务架构,在业务层面走向凋谢,并不是什么都去做,而是能激活他人来做。在行业数字化转型中,不少领头羊的企业在构筑联接、云、大数据、人工智能等方面的竞争力的同时,也在利用技术、数据、资本等各种伎俩吸引和获取垂直行业的优质生态资源,通过能力凋谢,吸引更多的开发者参加生态建设。 平台在企业外部走向凋谢的同时,也须要进一步向生态凋谢,反对企业的生态布局。即产品和平台通过凋谢的利用编程接口(Application Programming Interface,API)的形式对外开放能力,生态中的开发者利用该API,将其下层利用与凋谢的能力交融,构建差异化的翻新解决方案,助力企业客户数字化转型和商业胜利。 为了向开发者提供良好、统一、稳固的华为API的体验,华为通过明确“API治理六项准则”,来反对开发者生态建设。 1、 价值准则:制订明确的可掂量的API价值指标,牵引价值晋升。 2、 稳定性准则:通过API版本治理,防止和缩小对开发者的影响,保障API稳定性。 3、 易用性准则:API设计要面向开发者,提供从学习、开发到利用公布全过程的良好体验。 4、 安全性准则:制订API相干的危险控制措施以爱护数据和监控拜访。 5、 一致性准则:API应按对立的格局标准、公布渠道对外出现,以保持一致的开发者体验。 6、 服务反对准则:遵循对立的流程标准,为开发者提供良好的服务反对。 华为通过在产品和平台落地“API治理六项准则”,为生态中的开发者利用API时提供良好的体验,无效反对了开发者生态建设、企业客户数字化转型和公司云化策略落地。——节选自《从偶尔到必然:华为研发投资与治理实际》 面向开发者,华为云提供了残缺的系列工具集和服务,反对API全生命周期的治理:  华为云本身的服务,以及合作伙伴的服务,通过API网关对外提供;  API网关负责API的治理、散发、流控、缓存、监控以及SDK和CLI的生成;  对外提供的API,能够在API Explorer进行查问和调试,也能够进行API编排,同时也能够在云市场API专区进行间接交易;  与此同时,华为云提供全系列的工具,反对API的设计、开发、测试以及公布的全流程治理。 从华为云官网开发者资源工具下的API Explorer,能够获取华为云凋谢的2800+的API信息。这里汇聚了华为云服务所有凋谢的API,大家能够在这个平台上疾速的查看和搜寻、查看API文档、随时搜寻API错误码,咱们同时提供了在线可视化调试的性能,不便学习和把握API的应用。 API Explorer的要害能力,首先是反对凋谢API的在线检索和可视化调试,能够定位到云服务,疾速查问云服务下所有凋谢API;抉择API后,通过填写参数,能够间接进行在线调试,能够间接查看API的调用返回后果。 通过API文档能够获取更详尽的信息,包含接口束缚、申请参数阐明、示例、返回参数以及SDK等十分全的信息。咱们调用接口返回的错误码,能够通过错误码核心,疾速找到对应的谬误详细信息以及解决措施倡议,疾速解决API调用呈现的问题。 另一个要害能力是代码示例,反对Java、Python、Go、C#等支流语言调用SDK来拜访华为云凋谢API;同时反对CLI调用API,在装置部署、变更降级、扩容等场景下,能够应用命令行、批处理的形式来操作。华为云提供了不同OS(Windows、Linux、MacOS等)下的CLI工具,反对根据用户填写的参数来疾速生成CLI命令,来操作华为云的凋谢API。 想要获取更多对于华为云API信息? “收费下载翻新减速利器《华为云API精选手册》。 华为云API精选手册(第一期刊).pdf 4.18MB —— 流动举荐 ——华为云曾经成为寰球次要云服务供应商,在华为云上凋谢了2400+ API,包含计算、存储、网络、应用服务、软件开发服务、视频、数据库、EI智能等74+产品,如何利用这些丰盛弱小的API疾速开发本人的利用和服务,成为大家关注的热点。 华为云API学习赛,为入门初学者量身定制的学习平台,以赛带学,学以致用。无需代码,只需下载体验模板,按操作文档操作即可实现作品。参赛、邀请都有丰盛奖品,还有机会拿P40 5G手机超级激励!!辨认下图二维码即可报名加入。 API入门学习赛·AI人脸识别 报名地址奖项设置API入门学习赛·探险寻宝之旅 报名地址奖项设置点击关注,第一工夫理解华为云陈腐技术~

August 29, 2020 · 1 min · jiezi

关于api:影响音视频延迟的关键因素二采集前处理编解码

上一篇,咱们剖析了5种流媒体零碎与音视频提早的关系。明天,咱们将依照数据的流动步骤,剖析每个环节是如何影响音视频时延的,首先分享的是音视频“采集、前解决、编解码”这三个局部是如何引入时延,以及咱们的优化计划。 媒体数据流动步骤: 采集:把模拟信号变成数字信号; 前解决:包含3A之类的,把它变成污浊的信号; 编码:将信号送给编码器做编码编成码流,做数据压缩; 传输:把码流通过网络传输到对端; 抗抖动:对端在播放时要思考晦涩,卡顿的时候没法用,因而要做缓冲; 解码:当有肯定数据积攒后给解码器解码; 后处理:复原信号后有的产品会须要做后处理(通常不须要); 渲染:最初交给设施做渲染,实现音频播放视频播放。下面整套流程的每个环节都会引入时延,咱们能够针对每一环节去做优化。 1)采集 音视频采集环节的提早,与硬件设施、采集的参数配置相干。在即构侧来说,咱们是和操作系统的接口打交道。在音频采集时,咱们须要思考音频采样频率,每一次API返回的采样点数。比方: 如果咱们以44.1K赫兹去采样,零碎 API 每次返回 1024 个点的数据,那么就有 23.2ms 的提早,再加上一些设施的提早,最终的提早会大于23.2ms。如果以48K赫兹去采样,零碎 API 每次返回 192 个点的数据,提早只有 4ms。 但也不是越短越好,这里须要针对利用场景做衡量,很多状况下缩小采集帧长的意义不大,一方面编码的帧长有要求,另一方面可能会减少 CPU 开销。并且发送封包须要加包头,帧越短,须要拼帧做编码,payload 占比太小,意义没那么显著,甚至会减少额定开销。 2)前解决 第二个是前解决。比方实时音频的回声打消、噪声克制、自动增益3A解决;语聊场景的变声;实时视频的美颜、挂件、磨皮、瘦脸等。这些都会产生时延,咱们能够从两个角度来看时延的产生: 第一个是算法的固有时延,在上面的图片中,原始数据是蓝色的曲线,咱们想通过FIR低通滤波给它做平滑解决,能够看到这个成果是不错的,它的确变平滑了而且它的波形没有太大变动,然而咱们也能够看到它整体向右移了,这其实就是算法的固有时延。第二个就是计算时延,尤其是对视频来说有更大的挑战。通常咱们会把这个计算交给GPU,那么GPU就有额定的累赘,这是一个异构的计算,咱们要把数据给GPU,再把数据从GPU拉下来,这里是须要同步的,咱们发现会有10%-20%的提早。而为了失去这么大的吞吐量肯定要依附GPU,因此这个是防止不了的。 3)编解码 这是比拟重要的局部,这里次要指的是信源编码。信源编码的次要目标是压缩,把传输所须要的字节数压缩缩小,它须要衡量几个方面的货色:第一个是品质,第二个是码率,第三个是时延,第四个是吞吐。在等同码率下,一个编码方案引入的时延越高,通常来说品质会越高。咱们能够看看常见的编码方案对提早的影响: 首先是音频的编码方案,以咱们罕用的HE AAC编码方案和开源的OPUS计划为例,HE AAE零碎设计会引入129ms的固有时延,而OPUS能够做到10ms内,通常咱们在低提早的时候会抉择OPUS。 在视频编码方面,H.264是目前广泛应用的规范,它有多种编码类别,像baseline profile、main profile等,这两种编码最大的区别是baseline profile只产生I帧和P帧,而main profile除了I帧和P帧外还会产生B帧,B帧是双向参考帧,它会参考将来的数据,当编码帧率是20帧每秒,一个B帧将引入50ms的额定提早。因此在实时通信场景中,咱们通常都是用baseline profile。 另一方面,不同的编码实现对品质与提早都会产生影响,以视频编码为例。咱们要思考是用软件实现编码还是硬件实现编码,软编通常成果会比硬编好,一方面软编有十分多的策略去做晋升优化,另一方面软编的时延通常会比硬编的低。 当然也不是说软编就能完爆硬编,硬编的吞吐量大,当分辨率很大、码流很大的时候,软编是hold不住的,所以还是要依赖硬编。而硬编又依赖于具体的芯片实现,在某些芯片的实现上,硬编可能会达到70ms的提早,而硬解可能会达到130ms的提早,这和芯片性能相干。 以上就是采集、前解决、编解码环节,时延是如何造成的。第三篇咱们将分享在传输、渲染环节,有哪些影响时延的因素。

August 20, 2020 · 1 min · jiezi

关于api:API进阶之路逆袭用关键词抽取API搞定用户需求洞察

摘要: 老大说,我这份用关键词抽取API搞定的用户需要洞察报告,几乎比比市场调研的科班人士做得还好。最近这半个月的午饭,那可是相当不错,市场老大天天请吃饭,不是里面下馆子,就是从家带饺子。说是感激我上次帮他省了20万调研费。 (详情请戳:如何巧用情感剖析API帮公司省下20万调研费) 明天中午他又喊我去公司对面的竹林老鸡汤,我点了一份竹笋酿豆腐,外加一份老鸡汤,他一坐下就把刚上桌的鸡汤抢了过来。 呦呵,我说这小子咋回事,还敢抢我的汤?眼看着他一言不发,拿个小勺一勺一勺地喝完了那碗鸡汤,我就晓得,他这是又遇到难事了。 喝完汤,他把服务员喊过去又要了一份,而后跟我说:“老哥啊,弟弟我难呐,上次你给咱们做完剖析,公司批准了手机的采购计划,一次性洽购了1万台,几千万砸进去,但问题是当初卖不出去啊!” 唉,卖不出去,这玩意儿你也不能怪我不是,出于刺激,我问了句:“那是因为啥呢?” 市场老大一句话差点就把这几千万的大锅甩到我头上:“上次因为没做市场调研,市场部做流动策动的/写文案的/做设计的/做广告投放的,对于这款手机适宜什么人群、主打什么卖点齐全没概念,写进去的文案,做进去的海报,基本提不起用户趣味,推广费用花了不少,但转化率低得惨不忍睹。” 这锅我可不能背,但的确上次的情感剖析API只能剖析进去用户对这款手机是认可还是不认可,没方法剖析进去用户到底喜爱什么。这可咋整…… 默默地回顾了一遍上次用情感剖析API做用户调研的通过,记得过后还看到过一个关键词抽取API啊。能够用关键词抽取API把抓取的1万条用户评估做关键词提取,联合情感剖析API对这些关键词进行剖析,侧面的词是卖点,负面的词是用户痛点。 我把一份产品卖点和用户痛点关键词阐明发给了市场老大,他看完非让我去给市场部的小朋友们做一次用户需要洞察的营销培训,说这份资料比市场调研的科班人士做得还好。 说真的,写代码咱没问题,技术培训也不在话下,但营销培训我还真做不来。还是持续输入技术文档比拟靠谱。 【关键词抽取API实现评估剖析】具体操作步骤如下: 一、筹备环境1、登录华为云控制台,在“API凭证”获取我的项目ID。 2、通过PostMan获取token。 url:https://iam.cn-north-4.myhuaw... 发送一条POST申请。 POST:https://iam.cn-north-4.myhuaw... 3、记录响应头Headers中的X-Subject-Token值。 二、调用关键词抽取接口1、申请示例1(通过postman调用) body里以json格局填写申请参数: text:为文本评论;limit:为关键字的最大数量。发送一条POST申请。 POST:https://nlp-ext.cn-north-4.myhuaweicloud.com/v1/{project_id}/ nlp-fundamental/keyword-extraction 在Headers外面填入后面获取的X-Subject-Token。 点击发送send申请,失去: 从关键词里能够发现,该评论的强调方向是“拍照”、“耐用”、“难看”。 2、申请示例2(通过python调用) #定义获取关键字函数def get_keyword(request_url, test_data, token): """ 获取关键词 :param request_url:关键词抽取接口url :param test_data: 申请评论数据 :param token:鉴权信息 :return: """ myheader = {"content-type": "application/json"} myheader['X-Auth-Token'] = token response = requests.post( request_url, headers=myheader, data=json.dumps(test_data), verify=False) response = json.loads(response.content.decode('utf-8')) return response #填入该局点我的项目IDproject_id = ""#填入用户名,账号名,用户明码token = get_token( name="", domain_name="", pass_wd="", regoin_name="cn-north-4",request_url="https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens") test_data = { "text": "这手机无线网打不开,照相清晰度不够,外观也有瑕疵。", "limit": 5} print( get_keyword ( "https://nlp-ext.cn-north-4.myhuaweicloud.com/v1/{project_id} /nlp-fundamental/keyword-extraction".replace("{project_id}", project_id), test_data, token)) 响应示例: ...

August 20, 2020 · 1 min · jiezi

关于api:API进阶之路帮公司省下20万调研费如何巧用情感分析API实现用户偏好调研

摘要:自从学习API后,好像解锁了新技能,可别小看了一个小小的API接口,用好了都是能力无穷。这不,用情感剖析API来做用户偏好调研,没想到这么一个小创意给公司省了20万调研费用。上次借着高考热点整出一个刷屏的互动游戏之后,我间断被各业务部门请了一周的午饭了,明天运营部,今天品牌部,先天市场部…心里暗搓搓地想,这业务部门的团建经费咋就这么多呢? (详情请查看上集:《高考要考书面语?一场10w+刷屏流动是如何用多模态评测API做进去的》) 当然了,俗话说“天下没有收费的午餐”,各个部门都心愿能从我这儿获取点“高科技”来帮他们做出些翻新的事。“高科技”咱倒有的是,自从学习API后,好像解锁了新技能,可别小看了一个小小的API接口,用好了都是能力无穷。问题是翻新也得联合具体的事儿啊,哪能自觉为翻新而翻新。 前几天跟市场老大吃饭的时候,还真给他支了个招,用情感剖析API来做用户偏好调研,没想到这么一个小创意给公司省了20万调研费用。 事件是这样的,公司的电商部门想要大批量洽购上架一款新上市的手机,投入金额在千万级。为了保险起见,老板让他们先找征询公司做一轮市场调研,看看这款手机的用户反馈再决定是否要大批量洽购。 市场部找了几家征询公司出计划。征询公司倒是很快给出了计划和报价单,其中有20万的估算用于收集用户反馈信息。市场部老大犯了难,几家公司给出的调研计划都有一个独特的问题:费用高不说,还得加上走流程、出具体执行计划、沟通协调等环节,整个过程耗时长、效率低,等调研完结,市场机会可能也错过了。 我问他:如果不须要调研公司收集用户反馈信息,是不是就好办多了?市场老大说:“是的,咱们要是本人能搞定,速度能快很多,还能省下这20万,但用户反馈从哪来呢?” “这个好办,给我3天工夫,我帮你搞定!”咬着串上的肉,我许下了承诺。 3天后,我给他发了一封邮件,内容包含这款手机的1万条用户反馈,以及根本的用户反馈剖析。 我是怎么做的呢?简略来说就两步:  第一步:尽量多地找到这款手机的用户评论;  第二步:应用情感剖析API接口分析这些评论的正负面偏向、用户爱好度、用户爱好点。 【情感剖析API实现用户偏好调研】具体操作步骤如下。 一、筹备环境登录华为云控制台,确保曾经实名认证,查看账户在北京四的我的项目ID。(目前情感剖析服务只反对北京一和北京四,此次调用以北京四为例) 1、将鼠标挪动到右上角账号名下,抉择“我的凭证” 2、右边抉择API凭证,能够获取我的项目ID。 二、通过PostMan获取token(这是为了认证鉴权)url:https://iam.cn-north-4.myhuaw... 发送一条POST申请。 POST:https://iam.cn-north-4.myhuaweicloud/v3/auth/tokens 记录响应头Headers中的X-Subject-Token值。 三、通过PostMan调用情感剖析接口body里content为文本评论,type:1指抉择手机畛域,该接口同时还反对;type:2(汽车畛域)。 申请示例(1) POST申请: https://nlp-ext.cn-north-4.myhuaweicloud.com/v1/{project id}/nlu/sentimens/domain 在Headers外面填入后面获取的X-Subject-Token。 点击发送send申请,失去: 其中:label为1示意该评论情感偏向为侧面,confidence示意该情感偏向为侧面的置信度。 申请示例(2): 其中:label为0示意该评论情感偏向为负面,confidence示意该情感偏向为负面的置信度。 四、采纳Python代码调用获取token和情感剖析接口获取token def get_token(name, domain_name, pass_wd, regoin_name, request_url): """ 获取鉴权 :param name: 用户名 :param domain_name: 账号名 :param pass_wd: 明码 :param regoin_name: 局点域 :return:token """ mydata = { "auth": { "identity": { "methods": ["password"], "password": { "user": { "name": name, "password": pass_wd, "domain": { "name": domain_name } } } }, "scope": { "project": { "name": regoin_name } } } } response = requests.post( request_url, headers={"content-type": "application/json"}, data=json.dumps(mydata), verify=False) if response.status_code == 201: return response.headers['x-subject-token'] else: raise Exception(response.content)调用情感剖析接口 ...

August 10, 2020 · 1 min · jiezi

关于api:API进阶之路高考要考口语我用多模态评测API做了一场10w刷屏活动

摘要:闲着没事用多模态评测API做了一个测评英语口语的互动小游戏,竟然成了一场10万人参加的刷屏级流动。上一期故事说到,我成为了公司技术委员会副主席,上任后的第一件事是建设了一个云容器化的研发资料库,把每个研发硬盘里那点“好货色”都复用进去。(详情查看:《无奈设想!大龄码农的硬盘里有这么多宝藏》) 自此以后,老大交给我的撸代码的活越来越少,让我分心把技术委员会做起来。人一闲下来吧,就容易生事儿,这不么,闲着没事做了一个互动小游戏,经营妹子从公众号上推了张海报,竟然成了一场10万人参加的刷屏级流动。 咋回事呢?大略是7月25号,我看到一条新闻,北京2021年高考要减少英语口语考试。妈耶,这也太忽然了,这不跟产品经理忽然提需要、微博的运维赶上明星忽然发表结婚/离别一样让人猝不及防么。 很快,有孩子正上高中的家长都在朋友圈转发了这条音讯,这事的关注度这么高啊?总据说经营善于抓热点,那我是不是也能够做点什么抓住这次热点呢? 对于这个政策,家长和学生最关注最须要的是什么?考书面语,首先得晓得本人的书面语程度怎么样,晓得短板在哪能力有针对性地补习进步。那就是说须要书面语测评! 我想起之前在华为云官网上看到过一个“多模态评测”API,可能依据朗诵视频数据和试题文本,给朗读者的书面语评测分数。我能够利用这个API做一个测评类的H5小游戏。 依照我的习惯,实现性能的过程会同步梳理成文档,便于后浪们学习。 《多模态英语口语评测》 内容起源 多模态书面语当初还在公测阶段,所以我提前在华为云上申请了公测,当天就公测通过了~(公测链接:https://activity.huaweicloud.com/AI_free0.html?ggw_hd ) 步骤一:数据筹备l 反对的video类型包含avi/mp4/webm/mkv/flv等封装格局,视频清晰度不低于240p,帧率不低于25fps,大小限度在10M l 反对语言:英式英语 l 评测模式:单词评测、句子评测 l 须要把视频转化为对应的base64编码上传 转化举例(Python) #!/usr/bin/env python# encoding: utf-8 import base64def ToBase64(file, txt): with open(file, 'rb') as fileObj: image_data = fileObj.read() base64_data = base64.b64encode(image_data) fout = open(txt, 'w') fout.write(base64_data.decode()) fout.close()ToBase64("./test.wav",'2.txt') # 音频文件转换为base64步骤二:构建申请华为云语音交互服务的通用申请形式如下图所示。 备注: l 多模态评测API目前处于公测阶段,在华为-北京四能够调用,其Endpoint为“sis-ext.cn-north-4.myhuaweicloud.com”。 l 须要确认集体专有华为云我的项目ID和Token(身份认证) (我的项目ID获取办法;Token查询方法) 获取了身份认证后,就能够填写申请了。假如我当初有一个avi格局的文件,想用单词模式去判断书面语品质,我要学习的书面语是“sit down”。 申请示例是: POST https://{endpoint}/v1/{project_id}/assessment/video Request Header:Content-Type: application/jsonX-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG... Request Body:{ "config":{ "video_format": "avi", "language": "en_gb", "mode": "word" }, "video_data": "/+MgxAAUeHpMAUkQAANhuRAC...", "ref_text": "sit down"}步骤三:返回后果{ "fluency": { "score": 75.02139, "rhythm": 50.042786, "cohesion": 100.0 }, "pronunciation": { "score": 36.817684, "gop": 36.817684 }, "score": 22.09061, "completeness": 0.0,"duration": 2.46,"words": [尔后为音素、音标评估后果,其返回后果见下方]从返回的后果能够看到: ...

July 29, 2020 · 2 min · jiezi

关于api:API进阶之路高考要考口语我用多模态评测API做了一场10w刷屏活动

摘要:闲着没事用多模态评测API做了一个测评英语口语的互动小游戏,竟然成了一场10万人参加的刷屏级流动。上一期故事说到,我成为了公司技术委员会副主席,上任后的第一件事是建设了一个云容器化的研发资料库,把每个研发硬盘里那点“好货色”都复用进去。(详情查看:《无奈设想!大龄码农的硬盘里有这么多宝藏》) 自此以后,老大交给我的撸代码的活越来越少,让我分心把技术委员会做起来。人一闲下来吧,就容易生事儿,这不么,闲着没事做了一个互动小游戏,经营妹子从公众号上推了张海报,竟然成了一场10万人参加的刷屏级流动。 咋回事呢?大略是7月25号,我看到一条新闻,北京2021年高考要减少英语口语考试。妈耶,这也太忽然了,这不跟产品经理忽然提需要、微博的运维赶上明星忽然发表结婚/离别一样让人猝不及防么。 很快,有孩子正上高中的家长都在朋友圈转发了这条音讯,这事的关注度这么高啊?总据说经营善于抓热点,那我是不是也能够做点什么抓住这次热点呢? 对于这个政策,家长和学生最关注最须要的是什么?考书面语,首先得晓得本人的书面语程度怎么样,晓得短板在哪能力有针对性地补习进步。那就是说须要书面语测评! 我想起之前在华为云官网上看到过一个“多模态评测”API,可能依据朗诵视频数据和试题文本,给朗读者的书面语评测分数。我能够利用这个API做一个测评类的H5小游戏。 依照我的习惯,实现性能的过程会同步梳理成文档,便于后浪们学习。 《多模态英语口语评测》 内容起源 多模态书面语当初还在公测阶段,所以我提前在华为云上申请了公测,当天就公测通过了~(公测链接:https://activity.huaweicloud.com/AI_free0.html?ggw_hd ) 步骤一:数据筹备l 反对的video类型包含avi/mp4/webm/mkv/flv等封装格局,视频清晰度不低于240p,帧率不低于25fps,大小限度在10M l 反对语言:英式英语 l 评测模式:单词评测、句子评测 l 须要把视频转化为对应的base64编码上传 转化举例(Python) #!/usr/bin/env python# encoding: utf-8 import base64def ToBase64(file, txt): with open(file, 'rb') as fileObj: image_data = fileObj.read() base64_data = base64.b64encode(image_data) fout = open(txt, 'w') fout.write(base64_data.decode()) fout.close()ToBase64("./test.wav",'2.txt') # 音频文件转换为base64步骤二:构建申请华为云语音交互服务的通用申请形式如下图所示。 备注: l 多模态评测API目前处于公测阶段,在华为-北京四能够调用,其Endpoint为“sis-ext.cn-north-4.myhuaweicloud.com”。 l 须要确认集体专有华为云我的项目ID和Token(身份认证) (我的项目ID获取办法;Token查询方法) 获取了身份认证后,就能够填写申请了。假如我当初有一个avi格局的文件,想用单词模式去判断书面语品质,我要学习的书面语是“sit down”。 申请示例是: POST https://{endpoint}/v1/{project_id}/assessment/video Request Header:Content-Type: application/jsonX-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG... Request Body:{ "config":{ "video_format": "avi", "language": "en_gb", "mode": "word" }, "video_data": "/+MgxAAUeHpMAUkQAANhuRAC...", "ref_text": "sit down"}步骤三:返回后果{ "fluency": { "score": 75.02139, "rhythm": 50.042786, "cohesion": 100.0 }, "pronunciation": { "score": 36.817684, "gop": 36.817684 }, "score": 22.09061, "completeness": 0.0,"duration": 2.46,"words": [尔后为音素、音标评估后果,其返回后果见下方]从返回的后果能够看到: ...

July 29, 2020 · 2 min · jiezi

关于api:API进阶之路无法想象大龄码农的硬盘里有这么多宝藏

摘要:通过把所需建设的工具库做成云容器化利用,用CCE引擎,通过API网关调用云容器引擎中的容器利用。不仅适应了云原生的发展趋势,还能随时弹性扩容,满足公司规模化倒退的需要。公司开完年中会后,大家的工作都开始恢复正常,咱们也持续循序渐进地撸代码(写bug)~偶然透过办公室的玻璃看到老大跟老板在喝茶,感觉自从上次我影响了公司的策略方向,老板找老大“聊天”的次数越来越多了,看起来像是在“密谋”什么。 正想着呢,老大忽然转头看向我,四目绝对还是有些难堪的,更难堪的是老大示意我过来。 老大说:“公司想成立一个技术委员会,我挂名主席,你负责副主席,负责管理,外围的职责是积淀公司的技术资产,晋升所有研发人员的能力,你去想想该怎么口头。” “啥?我这就是技术委员会副主席了?积淀公司技术资产...这事儿该咋整呢?啥叫技术资产?”回到座位当前,我好像又变回了已经那个会怦然心动的少年,顺手点开硬盘,看到了我这么多年积攒下来的资源。 在我的硬盘里存储了这么多年来写过的各种程序、利用、工具,啥叫技术资产,这就叫技术资产呀,如果把公司存储的材料和大家硬盘里的宝藏都拿进去,做成一个可复用且随时可调用的工具库,那能够少写多少代码呀。 可是这该怎么实现呢? 有了!之前在华为云官网上看到过一个CCE云容器引擎。 咱们能够把建设的工具库做成云容器化利用,用CCE引擎,通过API网关调用云容器引擎中的容器利用。这样一来,不仅适应了云原生的发展趋势,还能随时弹性扩容,满足公司规模化倒退的需要。 说干就干,先给老大写个计划。我把思路写完之后,重点写了应用API网关拜访CCE云容器引擎中的容器利用的办法,毕竟,最终还是为了在工作中应用到这些技术资产。 通过API网关拜访CCE中的工作负载的办法 一、筹备CCE工作负载信息在通过API网关将容器的工作负载对外开放前,须要在CCE服务控制台获取如下图所示信息,创立好集群和工作负载。留神工作负载的拜访形式,需配置为“节点拜访”。 1、查问拜访端口 2、查问工作负载中实例所属弹性服务器的名称 二、创立VPC通道1、登录控制台,进入API网关服务。 2、“创立VPC通道”的“根本信息”界面,单击“创立快速通道”,输出如图所示信息,其余参数放弃默认值。 3、增加须要通过API网关拜访的CCE工作负载的实例节点。可增加多个实例,API网关反对负载平衡性能。 点击“实现”,增加VPC通道。 三、凋谢API1、创立分组 2、创立API。在“新建API”的“根本信息”界面,输出如下图所示信息。 在“定义API申请”界面,输出如下图所示信息。 在“定义后端服务”界面,输出如下图所示信息。 在“返回后果根底定义”界面,输出“胜利响应示例”,在本示例中,输出内容仅供参考,无理论作用。单击“实现”,实现API的创立。 3、调试API。返回200,示意调用胜利。 4、公布API 四、调用API1、在API详情界面,复制“API URL”。 2、关上浏览器,在地址栏粘贴“API URL”的地址。申请API胜利时,显示如下界面。如果想要设置一段时长内API的调用次数,请设置流控策略。 老大看过计划后很称心,并且要把这件事作为技术委员会成立后的第一个重点项目去做,申请专门的我的项目基金,还要给我成立我的项目小组,让我带着团队一起实现。当初的我:看向远方,眼光动摇,嗯是时候体现真正的技术了~ 据理解,目前APIG网关凋谢了共享版和专享版两个版本,开发者可申请体验demo,进入共享版进行体验操作。

July 25, 2020 · 1 min · jiezi