当前位置:   article > 正文

HTTP api & RPC & REST & RESTful & GraphQL_全知科技 graphql soap restful xml json-rpc

全知科技 graphql soap restful xml json-rpc

HTTP api & RPC & REST & RESTful & GraphQL

摘要

五句话,

  1. HTTP API就是以HTTP协议为承载的API。

  2. RPC style API 一般是指以HTTP协议或其他协议来承载的调用远程方法的API。

  3. REST是一种API架构范式,核心围绕着资源,交互的是资源的状态;

    特点是响应结果可缓存,服务可发现;目标是API长期使用。

  4. RESTful API是实现了不同REST约束的API,存在不同的成熟度级别。

  5. GraphQL是Facebook推出的RPC API,提供类SQL查询语言,可查询指定数据。

前言

    笔者本身是系统架构师出身,近些年多从事数据科学相关工作。在目前面向框架的开发模式下,本无意讨论架构问题。但所遇之人,从上到下无不经常把微服务和REST接口挂在嘴边,似乎REST的接口和微服务就是解决一切问题的不二选择。
    个人认为需要理清相关概念和其内在含义,特写此博客。

一. 什么是HTTP API

​     首先我们需要明确一下API(Application Programming Interface),即应用编程接口。软件系统暴露给其他软件或计算机系统的可使用的功能接口,一般来说,它会定义如何使用、数据格式和需要遵循的惯例等等。例如POSIX API等。

​     而HTTP API是目前比较流行的通过Web进行功能交互的接口,可理解为Web Service Over HTTP。就是以http协议为承载的web服务功能接口。

二. 什么是RPC

2.1 传统RPC

​     RPC (Remote Procedure Call),远程过程调用,即计算机程序调用一个执行在不同的地址空间(通常在其他计算机上),但是从代码层面上来看却不需要对远程交互进行显示编码,看上去就像该调用运行在本地一样。从形式上看是一种客户机-服务器模式,典型实现方法是请求/响应消息传递系统(Request-Response Message Passing)。

​     RPC经常被用于分布式计算系统,在面向对象语言中通常表示为RMI(Remote Method Invocation)。

​     RPC的核心可以理解为是一种进程通信的形式(Inter-process communication, IPC),最典型的RPC应用就是NFS(Network File System)。

2.2 HTTP RPC API

​     以上所提及的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 
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/145650
    推荐阅读
    相关标签
      

    闽ICP备14008679号