好奇怪呀,感觉所有风格不都差不多嘛

1.REST

REST(REpresentational State Transfer),首次出现在 2000 年 Roy Thomas Fielding 的博士论文中,提出了一种万维网的软件架构风格-REST(全称:Representational State Transfer, 表现层状态转换),目的是便于在不同软件/程序中(例如互联网)中互相传递信息。它指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 REST 的。

约束:客户端-服务器、无状态、可缓存、分层系统、按需代码、统一接口

特征:性能、简单性、可扩展性、可见性、可移植性、可发现性、可修改性、可靠性

2.So-called REST

called 和 so-called 都表示所谓,区别在于,前者是名词性从句,后者是一个形容词,因此在 REST 的设计上主要在于端点的设计。

约束:客户端-服务器、无状态、可缓存、分层系统、按需代码、统一接口

特征:性能、简单性、可扩展性、可见性、可移植性、可发现性、可靠性

So-called REST 是大多数团队的首选,因为遵循 HTTP 协议并提供 REST 的所有属性,统一接口。不幸的是,没有可修改性这个特征意味着 So-called REST 提供的可修改性很差。

3.GraphQL

GraphQL 是一个开源的,面向 API 而创造出来的数据查询操作语言以及相应的运行环境。 于 2012 年仍处于 Facebook 内部开发阶段,直到 2015 年才公开发布。 2018 年 11 月 7 日,Facebook 将 GraphQL 项目转移到新成立的 GraphQL 基金会。

约束:客户端-服务器、无状态、分层系统、统一接口

特征:易于开发、成本、类型安全

GraphQL 提供了令人难以置信的工具和出色的开发体验,可以快速设置和使用,并且可以很好地用于后端和前端的通信。它的发展不如 REST。

4.Apache Kafka

Kafka 是由 Apache 软件基金会开发的一个开源流处理平台,由 Scala 和 Java 编写。该项目的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台。其持久化层本质上是一个“按照分布式事务日志架构的大规模发布/订阅消息队列”,这使它作为企业级基础设施来处理流式数据非常有价值。

约束:客户端-服务器,无状态,统一接口

特征:性能、可见性、可扩展性、可发现性、可靠性、类型安全

Kafka 是一种流行的发布订阅风格,快速、可靠且可扩展。虽然它具有基于消息的系统的所有优点:永久存储消息,但它并不适合作为开放平台发布,并且需要大量的 Java 功能。

5.WebSub

WebSub 是一种在互联网传播分布式发布/订阅的开放标准。这种协议为数据订阅延伸了 Atom 和 RSS 协议。主要是为了提供即时更新通知,这将改善客户端获得任意间隔 feed 之情况。

约束:客户端-服务器、无状态、可缓存、分层系统、按需代码、统一接口

特征:简单性、可扩展性、可见性、可移植性、可发现性、可修改性、可靠性

WebSub 是另一种发布订阅 API 风格,从 REST 继承,即使在对外开放也能很好地工作,与语言无关。但是,性能肯定不如 Kafka。

6.SOAP

SOAP 是交换数据的一种协议规范,使用在计算机网络 Web 服务中,交换带结构的信息。SOAP 为了简化网页服务器从 XML 数据库中提取数据时,节省去格式化页面时间,以及不同应用程序之间按照 HTTP 通信协议,遵从 XML 格式执行资料互换,使其抽象于语言实现、平台和硬件。

约束:客户端-服务器,分层系统

特征:可见性、可发现性

它可能不是最现代的风格,但是 SOAP 仍然有它的用途。它非常适合在现有的企业基础设施上进行构建,特别是对于一对一的集成。然而,对于长期战略,一定要考虑其他风格。

7.gRPC

gRPC 是 Google 发起的一个开源远程过程调用 系统。该系统基于 HTTP/2 协议传输,使用 Protocol Buffers 作为接口描述语言。 其他功能: 认证 双向流 流控制 超时 最常见的应用场景是: 微服务框架下,多种语言服务之间的高效交互。

约束:客户端-服务器

特征:性能、简单性、可靠性、安全

gRPC 是一个由谷歌支持的基本 RPC 框架,虽然拥有出色的性能,但它保证了对 REST 或 GraphQL 已经提供的大部分内容进行改造。它不适用于 web 应用程序,也不适用于消息代理。

8.File Transfer

文件传输是指计算机文件通过信道从一台计算机传输到另一台计算机。在计算机历史上,针对不同的文件传输情况,人们设计了许多文件传输协议。

约束:客户端-服务器

特性:易于开发,成本低

简单的文件传输很容易被忽视,不过这是一种廉价且简单的数据传输方式。非常适合不需要频繁的批处理,也不需要实时功能的场景。

API的风格的更多相关文章

  1. 4 种主流的 API 架构风格对比

    1RPC:调用另一个系统的函数 RPC 的工作机制 客户端调用一个远程的过程,将参数和附加信息序列化为消息,然后将消息发送到服务端.服务端在接受到消息后,将信息的内容反序列化,执行所请求的操作,然后将 ...

  2. SpringBoot RESTful API 架构风格实践

    如果你要问 Spring Boot 做什么最厉害,我想答案就在本章标题 RESTful API 简称 REST API . 本项目源码下载 1 RESTful API 概述 1.1 什么是 RESTf ...

  3. Openstack API 类型 & REST 风格

    目录 目录 Openstack 提供了三种操作方式 Web界面 CIL 指令行 RESTful API REST 风格 RESTFul风格的API设计 基于HTTP协议的RESTful API Ope ...

  4. 初探.NET CORE WEB API(RESTful风格)

    前面有4篇系列博客 (一)Asp.net web api中的坑-[找不到与请求 URI匹配的 HTTP 资源] (二)Asp.net web api中的坑-[http get请求中的参数] (三)As ...

  5. RESTful API URI 设计的一些总结

    非常赞的四篇文章: Resource Naming Best Practices for Designing a Pragmatic RESTful API 撰写合格的 REST API JSON 风 ...

  6. ASP.NET Core Web API 开发-RESTful API实现

    ASP.NET Core Web API 开发-RESTful API实现 REST 介绍: 符合REST设计风格的Web API称为RESTful API. 具象状态传输(英文:Representa ...

  7. Rest API 开发 学习笔记(转)

    Rest API 开发 学习笔记 概述 REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式.获得这些表徵致使这些应用程序转变了其状态.随着 ...

  8. Restfull API 示例

    什么是Restfull API Restfull API 从字面就可以知道,他是rest式的接口,所以就要先了解什么是rest rest 不是一个技术,也不是一个协议 rest 指的是一组架构约束条件 ...

  9. C++ API设计

    <C++ API设计> 基本信息 作者: (美)Martin Reddy    译者: 刘晓娜 臧秀涛 林健 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:97871153 ...

  10. Baidu与Google地图API初探

    前天周六,有个好友过来玩,他说想在他的站点中加入地图导航模块,但不知道选择哪个第三方Map API 在网上查了下Baidu.Google.QQ和MapBar等4种Map API(都是採用JS开放API ...

随机推荐

  1. Angularjs的工程化

    Angularjs的工程化 AMD规范和CMD规范 为什么需要模块化管理工具 在编写项目时可能需要加载很多js文件,若b.js依赖a.js,且a.js比b.js大很多,那么浏览器会让b.js等待a.j ...

  2. 为什么 Go 不支持 []T 转换为 []interface

    在 Go 中,如果 interface{} 作为函数参数的话,是可以传任意参数的,然后通过类型断言来转换. 举个例子: package main import "fmt" func ...

  3. 视图,触发器,存储过程,流程控制等MySQL小知识点

    视图,触发器,存储过程,流程控制等MySQL小知识点 一.SQL注入问题 登录: import pymysql conn = pymysql.connect( host='127.0.0.1', po ...

  4. python基本数据类型与内置方法

    1.数据类型内置方法理论 1.每一种数据类型本身都含有一系列的操作方法,内置方法是其本身自带的功能,是其中最多的. 2.python中数据类型调用的内置方法的统一句式为>>>:句点符 ...

  5. LeetCode_周赛_330

    6337. 统计桌面上的不同数字 代码 后面出现的数字都是小于 n 的. n = 1 时,答案是 1. n > 1时: 第一天,n % (n - 1) == 1,n - 1会被加入 第二天,(n ...

  6. 【DS】1.2

    top-iron man   算法 效率度量 时间T=T(n) 1.顺序忽略2.只选一个基本操作分析3.多层嵌套只考虑最深的循环循环了几次  test1: test2: 空间   原地工作:算法所需内 ...

  7. Python 内置界面开发框架 Tkinter入门篇 丁

    如需要转载,请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/X5cqennLrq7i1pzBAAqQ2w 本文大概 2562 个字,阅读需花 15 分钟 内 ...

  8. P12_小程序API的3大分类

    小程序 API 概述 小程序中的 API 是由宿主环境提供的,通过这些丰富的小程序 API,开发者可以方便的调用微信提供的能力,例如:获取用户信息.本地存储.支付功能等. 小程序 API 的 3 大分 ...

  9. .NET Core项目部署到Windows系统Docker

    1.新建一个ASP.NET Core Web应用(模型-视图-控制器) 2. 项目启动Docker.Docker OS选择Windows 3.系统默认的dockerfile文件如下 #See http ...

  10. .net core 前端传递参数有值 后端接收到的数据却是null

    1.问题分析 在做接口测试时,偶然出现了前端输出有值,但是后端断点调试时却出现接收参数总是为null的情况 2.解决办法 前端打印log,看前端的每一个传值的数据类型,与后端请求参数类进行认真的一一比 ...