赞
踩
五句话,
HTTP API就是以HTTP协议为承载的API。
RPC style API 一般是指以HTTP协议或其他协议来承载的调用远程方法的API。
REST是一种API架构范式,核心围绕着资源,交互的是资源的状态;
特点是响应结果可缓存,服务可发现;目标是API长期使用。
RESTful API是实现了不同REST约束的API,存在不同的成熟度级别。
GraphQL是Facebook推出的RPC API,提供类SQL查询语言,可查询指定数据。
笔者本身是系统架构师出身,近些年多从事数据科学相关工作。在目前面向框架的开发模式下,本无意讨论架构问题。但所遇之人,从上到下无不经常把微服务和REST接口挂在嘴边,似乎REST的接口和微服务就是解决一切问题的不二选择。
个人认为需要理清相关概念和其内在含义,特写此博客。
首先我们需要明确一下API(Application Programming Interface),即应用编程接口。软件系统暴露给其他软件或计算机系统的可使用的功能接口,一般来说,它会定义如何使用、数据格式和需要遵循的惯例等等。例如POSIX API等。
而HTTP API是目前比较流行的通过Web进行功能交互的接口,可理解为Web Service Over HTTP。就是以http协议为承载的web服务功能接口。
RPC (Remote Procedure Call),远程过程调用,即计算机程序调用一个执行在不同的地址空间(通常在其他计算机上),但是从代码层面上来看却不需要对远程交互进行显示编码,看上去就像该调用运行在本地一样。从形式上看是一种客户机-服务器模式,典型实现方法是请求/响应消息传递系统(Request-Response Message Passing)。
RPC经常被用于分布式计算系统,在面向对象语言中通常表示为RMI(Remote Method Invocation)。
RPC的核心可以理解为是一种进程通信的形式(Inter-process communication, IPC),最典型的RPC应用就是NFS(Network File System)。
以上所提及的RPC的概念与互联网似乎没有什么关系,实际上如果把RPC这种方式以http或者AMQP作为承载就是我们常说的web service的Web api。在调用一个远程过程时,我们需要指定方法名称,参数并接受返回结果。数据格式也可以自定义,常用的方式有
XML-RPC:保证XML中的数据类型比较困难
JSON-RPC
SOAP(Simple Object Access Protocol):结合XML-Schema和WSDL(Web Service Description Language),相对难以使用。Saleforce是使用这个方案的典型案例。
如果以http协议作为承载,就是把方法写在URL中,参数写在query string或者body中。
举个例子:
POST /Hello
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。