陆离的光怪世界

关于API Caller的一些想法

    Thoughts🤔

你是API Caller吗?还是你只是个API Caller

这有点像个直击灵魂的拷问,作为程序员的你是否问过自己呢?
自从开始学习计算机开始,我有时候常常在想自己作为一个coder or programmer,究竟在做些什么?第一次见到这个词–API,也叫应用程序编程接口,这个拗口的名字的英文原名就是Application Programming Interface,其实有点被吓到:应用程序是什么?编程是什么?接口又是什么?对于初学者来说一上来看到很多术语当然会感到手足无措,但你应该想,术语就是术语,他们只是一些定义而已,随着你对它的深入了解,它表面看起来再怎么晦涩也只不过是对行外人说的了。


首先,什么是Application。这个词为广大人民所熟知大概是从2007年初代iPhone上市后,从那以后,手机相当于一个智能小电脑,也可以下载安装各种应用程序了。而且大家也乐于叫它的简称:App(以及对应的App Store)。其实这个词在计算机领域早就已经使用的很广泛了。
一个应用程序,就是一个小的具备某种功能的一个系统或者应用。

Programming,也就是编程,就是程序员日常在做的事情。

Interface这个词在计算机及相关行业有点被overuse了,不过最常听说的一般是这两种:硬件接口软件接口
硬件接口就是在硬件与硬件之间用的,通俗的理解,就是为了使硬件与硬件之间能够传输数据,因此硬件接口通常伴随着各种协议。其实没有学习理论知识的时候,对接口的理解就是硬件上的各种插线的接口,比如电脑上的USB接口,电视或者显示屏的HDMI接口等等。

软件接口常说的一般有两种:

  1. 编程语言相关的特性;
  2. 软件中的可以提供给其它组件(代码)调用的一个服务。

许多编程语言都设计了接口这一特性,如Java、C#等。Java中接口与抽象类比较接近,与抽象类不同的是,接口中不包含属性,只有方法,并且实现接口的方法必须实现其所有方法,而且一个类可以继承多个接口;而抽象类是一个类,只能被单继承。抽象类相当于是类的一个抽象,将子类中的公共部分抽象出来方便使用;而接口相当与是“插件”,继承了某个接口相当于为这个类添加了一些新功能。

第二类涉及软件的接口就是代码中的某个服务,这也和近两年比较火的微服务有关。即,对于某个服务来说,有调用方和被调用方。调用方通过一些远程调用协议,如RPC,或者直接通过HTTP,来调用被调用方提供的接口。这个接口就是被调用方设计好的,如何传参,返回什么响应,怎么进行异常处理等等。或者如果是项目组内部,可以通过组件的方式,使用maven引入依赖的方式直接调用。

通常这些接口就是一些业务相关的实现代码,涉及到的也就是业务开发。
业务开发中,一般有两方面需要考虑:

  • 如何实现?
  • 怎样更高效?

而如何实现通常包括使用什么框架(项目组内部应该是确定好了的)、哪些现成代码库可以利用、怎样处理逻辑;如果复杂一点的业务可能涉及到逻辑比较复杂,或者需要一些特别的算法来实现它。
至于怎样更高效,那就是代码优化的问题了,通常可以包括如何优化访问速度,如何使代码具有可扩展性,如何应对高并发等。

业务开发的初级阶段,对于一些对响应速度要求不是很高、或者用户量不是很大的需求,涉及到的知识点可能也不是很多,实现功能即可。因此很多人会觉得,可能做了某个功能,实现了某个需求,但自己的知识并没有增加(比如我)。因此,我们会想看一下框架源码,看看框架的一些机制是怎么实现的,如果我们自己来实现的话会怎样做。还有关于造轮子的争论,造轮子不是不可以的,那些很好用的轮子(比如Ngnix,Redis),当初不也是一些工程师觉得现有的框架工具不好用,不能满足自己的需求然后做了吗?虽然我们可能做不到那么好,但是在造轮子的过程中一定能学到一些知识的,这些在平时的业务代码中学不到的东西。

但是,我们需要造轮子吗?或者说我们需要绞尽脑汁想我们要怎样能写出一个被大家称赞不绝的好轮子吗?我认为也不需要。因为好的轮子经历了时间的洗礼,已经被大家验证过了的,它的一些好的设计思想也是值得我们学习的,但这不意味着我们需要拿它的思想在相同的领域造一个比它更好的轮子。因为,不太可能也没什么必要。我们要做的,是要如何利用好这些轮子,来build我们自己的项目。就像盖一座房子,明明可以用更好更现代的砖块和混凝土,你非要选择用更原始的茅草和木头,显然再努力也造不出质量更好的房子。

还有一个观点就是,尽管你写的是应用层的代码,你也可以写的很精彩!首先,不可能每个人都写底层,也不是写底层的人就多么高大上,高级语言发明出来是有它的道理的。你用Java语言可以实现一个HTTP服务器,用C语言同样可以,而且还更麻烦。当然从运行效率上来说,肯定是后者要高一些,但这不妨碍你掌握学习如何写HTTP服务器,因为原理都是一样的。

综上,关于API Caller的看法,没必要觉得丢人。只要平时多思考,多学习了解底层框架原理,多动手实现一下新学到的奇怪的知识,就可以了


毕竟,奇怪的知识总会增加的:)

页阅读量:  ・  站访问量:  ・  站访客数: