摘要:程序猿小Hi入职公司不到三个月,就被老板单独叫到了办公室……
初创公司R:刚刚创立,致力于通过信息化技术,帮助中小企业数字化转型,华丽转身。
公司成员:老板、程序猿小Hi、… …
程序猿小Hi入职公司不到三个月,就被老板单独叫到了办公室。小Hi心情既激动又不安,激动的是老板是不是要给自己升职加薪,不安的是不是自己表现不好,老板要炒鱿鱼,毕竟疫情是一个很好的借口。
来到了老板的办公室,不等小Hi说话,就单刀直入,说:小Hi啊,你来公司挺长时间了(还没到三个月,老板健忘?),你的工作做得挺好(心里开始爽歪歪),今天有个重要任务要交给你(凉了一半,升职加薪忘了吧)。
小Hi:好的,老板你有啥就直接吩咐,保证高效完成(心里开始有点忐忑)。
老板:昨天有个新客户,提了个需求,他们是在XX高新区,公司多切人员杂,在目前疫情情况下,想在门岗处增加门禁,识别外来人员,加强疫情管控。这是他们的需求文档,公司的其他人都出差了,这个任务就交给你了。记住,要做成模块化,方便后续客户应用。
小Hi:是,老板,我好好看看他们的需求文档。
……
小Hi离开老板办公室,打开需求文档一看,六个大字映入眼帘:我们要人脸识别(不对,是七个),心里翻滚着五味杂陈,“模块化”和“人脸识别”,这就是需求。
第一次接到了老板的任务,小Hi陷入了“深思”(吃鸡游戏中…)
第一个需求是“模块化”,模块化就是要求封装内部细节,精简对外交互,实现高内聚低耦合。小Hi第一时间就想到了通过提供API来保障自身的独立性,以及清晰化的对外交互界面,大学里学的那点API相关的知识开始在脑海里迸发:
API的定义:
应用程序接口(Application Programming Interface)是一组定义、程序及协议的集合,通过 API 接口实现计算机软件之间的相互通信。用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。
常见的API类型有:
1)RESTful API:基于HTTP、URI和XML等的常见的Web服务接口标准,描述了一个架构样式的网络系统,其核心是面向资源的。
2)SOAP接口:简单对象访问协议,简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。
3)RPC接口:远程过程调用 (RPC) 是一种协议,程序可使用这种协议向网络中的另一台计算机上的程序请求服务。
4)RMI接口:远程方法调用RMI是针对于java语言的, RMI 允许您使用Java编写分布式对象。
API的设计原则,好API的6个特质:
1)极简:极简的API是指对外暴露的尽可能少,这样的API更易理解、记忆、调试和变更。
2)完备:完备的API是指用户期望有的功能都包含了,满足用户的需求,是完备的。
3)语义清晰简单:接口、参数、帮助等的语义清晰简单,使用常用语和缩略语,不适用生僻语,尽量减少意外。
4)符合直觉:经验不很丰富的用户不用阅读API文档就能搞懂API,而且程序员不用了解API就能看明白使用API的代码。
5)易于记忆:为使API易于记忆,API的命名约定应该具有一致性和精确性。使用易于识别的模式和概念,并且避免用缩写。
6)引导API使用者写出可读代码:代码只写一次,却要多次的阅读(还有调试和修改)。写出可读性好的代码有时候要花费更多的时间,但对于产品的整个生命周期来说是节省了时间的。
注:源自Qt的API设计原则,详见https://github.com/oldratlee/translations/blob/master/api-design-principles-from-qt/README.md
API相关概念
1)API网关:服务与服务之间通信的中介或桥梁,提供服务接入和鉴权、API注册、流控、管理等API托管服务。
2)API全生命周期管理:覆盖了API的设计、开发、测试、发布、订阅、使用和分析的端到端、全流程的管理。
第二个需求是“人脸识别”,小Hi没有AI相关技术积累,开始捉急,忽然灵光一闪,想起来前两天华为云专家过来交流,有提到华为云的AI能力,于是激动的打开了浏览器。
输入https://www.huaweicloud.com/,打开华为云,选择“开发者”=>“资源工具”下的API Explorer,查看华为云所有开放API:
在API Explorer上面,可以快速查看对应云服务的开放API:
在搜索框输入人脸识别,搜索相关的云服务:
打开人脸识别服务,有人脸比对、人脸检测、人脸搜索、人脸资源管理、人脸库资源管理等,挺多API的,太棒了。
迫不及待调试一把,登录华为云(没注册的赶紧注册下),选择到人脸识别控制台页面(https://console.huaweicloud.com/frs/?region=cn-north-1#/frs/home),开通人脸比对服务:
在API Explorer上选择人脸比对API(FaceCompareByFile),查看此API详细介绍信息,包括接口说明、请求参数、示例、返回参数、错误码等,此API支持对比两张人脸图片信息,判断是否同一个人的置信度:
我们直接可以选择要比对的图片,在API Explorer上点击调试按钮来在线调试这个API:
点击调试后,可以得到比对结果,相似度94.699%(代表同一个人的概率很大):
再调试了多个API接口,查阅了人脸识别服务介绍后,小Hi心里有着落了,一张“蓝图”在脑海中绘制:
小Hi顿时信心爆棚起来,这下可以在老板面前好好表现下了。
你以为这就结束了吗?
图样图森破,小Hi还是太年轻,按以往经验,蓝图和落地至少还差个银河的距离,等待小Hi的是怎么快速实现这个公共服务,未完待续 ……
转载:https://blog.csdn.net/devcloud/article/details/109399742