API管理-架构-1-概要设计

article/2025/10/2 16:01:10

API管理-架构-概要设计

  • 前言
  • API 为中心的架构
    • REST API Unless
      • Streaming API
    • 微服务与API
    • API分类
    • API分层
  • API平台
  • API安全
    • 一些必要点
  • Reference

前言

为了在企业中能够更好的支持Cloud, Mobile, Big Data,成功的关键在于能够 安全的, 可靠的,一致的发布web services. REST API是目前广泛使用的web service,WEB API为底层的应用与数据提供与发布web-enabled 接口,它的特点是能够直接简单的访问应用功能与数据;并且解耦不同的IT服务,从而IT服务提供者能够独立的提供IT服务,支持application-to-application的集成模式。

API First策略意味着所有的集成场景中首先考虑API集成的方式,甚至在应用没有开发的时候就需要考虑其可以提供的API。将API与底层的应用分开来考虑,将API作为一个产品,从而能够更大程度的复用API。

API管理提供了API发布,API发现,API网关,API运维等功能。

API 为中心的架构

在API为中心的架构中,API管理作为中心的接口层,解耦了接口提供者与接口消费者,其概要架构如下图
在这里插入图片描述

REST API Unless

其他的技术,例如GraphQL, gRPC , SOAP在一些特定场景下可以满足特定的需求。

RESTGraphQLgRPCSOAP
Internal and External IntegrationInternal IntegrationInternal IntegrationInternal Integration
需要灵活、复杂的数据结构在高性能的场景中(REST与JSON的latency不能满足的情况下)旧系统提供的接口
需要高频率的API调用可以使用REST包装供外部调用只用于系统API的层级

Streaming API

Streaming API能够实时将数据传输给客户端,与一般REST API的区别在于Streaming API 使用HTTP长连接,并将数据主动推送到客户端. 在服务端持续的产生数据流的场景中,能够极大的降低网络延迟。
通常Streaming API使用publish/subscribe模式。

微服务与API

微服务架构中每个微服务只提供其一套服务 - It does one thing and it does it well.

微服务的特征包括自治性与隔离性(autonomous and isolated), 也就是说微服务本身是 独立的功能单元, 微服务之间是松耦合的,各个微服务都是独立设计、开发、测试和发布的。 当需要变更的时候,只有影响到的微服务需要devops的自动化部署管道,从而也简化了系统更新的过程.

由于上述的可复用性,某个微服务可以被数个其他服务所调用,所以微服务还应具有按需伸缩的特性。

API分类

在企业应用中,可以根据数据的分类与API的使用范围(企业内部还是外部)来做API的分类。 例如

  • Public API only expose unrestricted information
  • Partner API may access restricted information
  • Internal API
  • Private API

API分层

API分层的主要目的是增加API的可重用性和灵活性,从上至下分为以下三层

  1. 访问层 🡪 UI and presentation specific logic
  2. 业务层API 🡪 Orchestration and process triggers
  3. 系统层API 🡪 每一个业务系统的API

API平台

所以,发布了API之后就可以开始集成工作,然后就没有问题了,是这样吗?当然不是,还需要考虑安全与威胁,认证与授权,可用性,监控等才是一个完整的API产品。

API平台是管理API的中间件,应当具备以下功能:

  • API Management
    • API life cycle management
    • API Developer Portal
    • API Proxy
    • Policy Management
    • Mediation,format mediation and protocol mediation
  • Operations
    • Security
    • Monitoring
    • Report&Analysis
  • Messaging
    • Orchestration
    • Data Transformation
    • Message Routing
    • Adapters/Connectors

API安全

API安全是最被忽视的一层,但是必须重视

一些必要点

  • API设计阶段就应该开始Risk Assessment
  • 所有的API必须配置默认的最小安全策略集,包括
    • Https (TLS1.2 or later)
    • IP White/Black List
    • Authentication and Authorization
      • API key Security
      • Basic Authentication
      • OAuth 2.0
      • Certificate based authentication
    • Restrict http methods
    • Input validation
    • Error logging
    • Audit logs
    • Spike Arrest
    • Quota
    • JSON Threat mitigation
    • XML threat detection.
  • API 发布需要IT安全部门的审批
  • API monitoring是必要的
  • 需要Web 防火墙来支持DDOS prevention, threat mitigation等

Reference

Web Token


http://chatgpt.dhexx.cn/article/ubo2IjWO.shtml

相关文章

Webssh、浏览器使用ssh连接服务器

python版本 python >2.7 效果图: 代码传送门: https://github.com/NiuXiangQian/webssh

webshell及工具

目录 一,Webshell的概念 二,eval函数的定义和用法 三,连接工具菜刀 3.1文件管理 3.2 虚拟终端 3.3 菜刀与burpsuite联动 四,哥斯拉的使用 五,冰蝎 六,webshell分类 七,webshell如何连接 …

web ssh

前言: 好久都没来写博客,最近忙啥去了呢? 一是忙于saltstack的二次开发,二是云计算的学习研究中,所以就一直没写东西,今天给大家介绍个工具。 好了,开始正文! 1.首先来说一下为什么要…

Docker 配置WebSSH

1、基于DockerHub Centos镜像 docker pull centos:centos7 2、 Centos镜像存在的一个自身问题:启动后的容器内部无法使用systemctl命令 Failed to get D-Bus connection: Operation not permitted ## docker run -dit eeb6ee3f44bd /bin/bash ## 切勿忘记宿主机防…

什么是Webshell?

一、什么是Webshell? 顾名思义,“web”的含义是显然需要服务器开放web服务,“shell”的含义是取得对服务器某种程度上操作权限。webshell常常被称为入侵者通过网站端口对网站服务器的某种程度上操作的权限。由于webshell其大多是以动态脚本的…

Flask框架:运用SocketIO实现WebSSH

Flask 框架中如果想要实现WebSocket功能有许多种方式,运用SocketIO库来实现无疑是最简单的一种方式,Flask中封装了一个flask_socketio库该库可以直接通过pip仓库安装,如下内容将重点简述SocketIO库在Flask框架中是如何被应用的,最…

网页终端直接操作linux系统【webssh】

1、安装pip linux系统默认都安装了python,但不一定安装了pip,所以先安装pip 我的系统中默认安装的是python2.7版本 curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py python get-pip.py 安装成功如图 2、安装webssh pip install w…

离线 安装webssh

1 安装包 和 webssh 代码准备 1 cmake 安装 安装参考文档: 文档地址 下载地址 $ tar xvfz cmake-3.24.2-linux-x86_64.tar.gz 配置环境全局变量 $ vim /etc/profile ​ # 添加 export PATH/root/webterminal/cmake-3.18.0-Linux-x86_64/bin:$PATH ​ $ source /etc/profil…

webshell是什么?

webshell是什么? 百度百科的定义:webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文…

Docker 容器内体验 WebSSH

Docker容器内体验 WebSSH 项目地址: https://pypi.org/project/webssh/ 容器创建 docker run -tid --name centos -p 8888:8888 -p 122:22 centos:7 /bin/bash # 启动容器写个比较呆的shell脚本&#xff0c;方便安装 cat <<EOF > wssh.sh yum -y install epel-re…

golang实现WebSSH的功能

在最近一次需求里&#xff0c;需要实现一个webSSH的功能&#xff0c;就是把terminal搬到web中来。要实现这个功能&#xff0c;可以采用websocketssh来说实现 1.第一步实现websocket websocket主要是ws或wss协议&#xff0c;其原理就是http协议升级成ws协议&#xff0c;即ws是…

纯Java实现一个网页版的Xshell

前言 最近由于项目需求&#xff0c;项目中需要实现一个WebSSH连接终端的功能&#xff0c;由于自己第一次做这类型功能&#xff0c;所以首先上了GitHub找了找有没有现成的轮子可以拿来直接用&#xff0c;当时看到了很多这方面的项目&#xff0c;例如&#xff1a;GateOne、webss…

webssh

vue djangolinux实现webssh 技术栈 xterm.js&#xff1a;做到vue的表现型 websocket&#xff1a; 做vue和django之间的通信 paramiko&#xff1a; 建立SSH连接通道 ssh&#xff1a; 与linux进行连接 threading&#xff1a;多条数据返回前端&#xff0c;io密集型&#xff0c;用…

webSSH如何安装?如何使用?解决Web端远程连接终端~~运维篇

Hi~由于博主公司业务有相当多的Linux终端设备&#xff0c;每次连上设备需要使用到外部工具&#xff0c;如&#xff1a;Xshell&#xff0c;每次都得去输入IP&#xff0c;端口&#xff0c;账号&#xff0c;密码相当的繁琐&#xff1b;偶尔看到阿里云远程连接终端功能挺有意思的&a…

超强功能WebSSH安装,解决Web远程SSH终端

项目地址&#xff1a;https://github.com/huashengdun/webssh 一个简单的 Web 应用程序&#xff0c;用作 ssh 客户端以连接到您的 ssh 服务器。它是用 Python 编写的&#xff0c;基于 tornado、paramiko 和 xterm.js。 特征&#xff1a; 支持SSH密码认证&#xff0c;包括空密…

webssh —— 浏览器上的终端

需求 近期接到一个需求&#xff0c;实现一个运行在浏览器上的终端&#xff0c;用于快速连接到公司设备。 Tip&#xff1a;只求实现的可直接跳到 「最终方案」 处 。 需求有以下几点 1、设备都不在公网状态下 2、webshell 需要免密登陆 3、动态连接的端口、账号、密码 4、可显…

webssh的安装与使用

最近研究了一下在web端实现一个远程连接终端操作的类似网页版xshell的实现。在网上搜索了一下发现已经有类似的操作在这里主要介绍以下两种。 https://github.com/huashengdun/websshhttps://github.com/billchurch/WebSSH2 我用的是虚拟机centos7系统&#xff0c;别的linux系…

简单分析实现运维利器---webssh终端

背景 现在几乎所有东西都向往着自动化,在运维界更是如此,运维人员都向往自动化代替人工操作、解决人工操作大量重复性工作的问题、故障主动恢复:及时发现;流程;解决。运维规范化:角色定义和责任划分、流程化等。但这些种种的目的,都离不开非常细小的技术支持,下面我们…

WebsocketWebSSH

什么是WebSSH? webssh 泛指一种技术可以在网页上实现一个 SSH 终端ssh终端&#xff1a;用来通过ssh协议&#xff0c;连接服务器进行管理运维开发方向&#xff1a;堡垒机登录、线上机器管理&#xff08;因为运维人员不可能24小时携带电脑&#xff09;在线编程&#xff1a;提供…

WebSSH神器sshwifty的安装与使用

本文章最初发表在XJHui’s Blog&#xff0c;未经允许&#xff0c;任何人禁止转载&#xff01; 为使您获得最好的阅读体验&#xff0c;强烈建议您点击 这里 前往 XJHui’s Blog 查看&#xff01; WebSSH工具 初衷 9.9买的一年服务器&#xff0c;不用实属可惜由于是计算机专业…