API、REST API、RESTful API 和 Web Service 之间的区别

API、REST API、RESTful API 和 Web Service 之间的区别

API

API,全称是 Application Programming Interface,翻译过来就是“应用程序编程接口”。

1.技术细节和示例代码:

API 通常由端点(URL)、方法(GET、POST 等)和数据格式(JSON、XML 等)组成。
示例:调用天气 API 获取天气数据:

import requests response = requests.get("http://api.weatherapi.com/v1/city?key=aaaaaa&q=Shanghai") data = response.json()print(data)

这里说的是网络 API(Web API),即通过网络请求和响应进行通信的 API。

2.API 的作用和应用场景

API 的作用是让不同的软件系统能够互相对话,比如你的手机 APP 可以通过 API 获取新闻信息,或者一个银行网站通过 API 处理支付。

Web Service

Web Service 就是通过网络进行的服务,允许不同的应用程序通过网络互相通信。它们使用标准的 XML 消息格式,可以在不同的平台和语言之间进行通信。

1.技术细节和示例代码:

Web Service 通常使用 SOAP 协议或 REST 架构。示例:使用 SOAP 请求天气信息

POST /weather HTTP/1.1 Host: www.example.com Content-Type: text/xml; charset=utf-8 Content-Length: nnn <?xml version="1.0"?><soap:Envelopexmlns:soap="http://www.w3.org/2001/12/soap-envelope"soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"><soap:Bodyxmlns:m="http://www.example.org/weather"><m:GetWeather><m:City>London</m:City></m:GetWeather></soap:Body></soap:Envelope>

2.Web Service 的类型

SOAP Web Service:使用 SOAP 协议,比较复杂但功能强大。
RESTful Web Service:使用 HTTP 协议,更简单灵活。

3.Spring Boot环境中实现方式

在SOAP的实现中,Spring Web Services(Spring WS)和Java API for XML Web Services(JAX-WS)是两种主要的技术选择。Spring WS 是专为简化SOAP Web Services的开发而设计的,提供了一种创建文档驱动、基于SOAP的服务的方式,特别适合需要深度集成和复杂配置的企业级应用。相比之下,JAX-WS 是遵循WS-*标准的更为基础和轻量级的Java API,适用于需要标准Java支持且配置较少的场景。

@WebService注解来自JAX-WS(Java API for XML Web Services)标准,它是一个专门用于创建SOAP(Simple Object Access Protocol)Web服务的API。这种方法通常用于实现符合WS-标准的Web服务,并且是Java EE规范的一部分。
@Endpoint注解来自Spring Web Services(Spring WS)项目,它专门用于处理SOAP Web服务的开发。Spring WS 不依赖于企业Java的标准,而是建立在Spring框架的基础之上,提供更灵活的配置和更好的集成。

REST API

REST 代表“表现层状态转化”,是一种架构风格,而不是协议,强调资源的表示和状态的转移,REST API 就是遵循这种风格设计的 API。使用现有的 HTTP 协议,不需要额外的协议。

1.技术细节和示例代码:

REST API 使用 HTTP 协议进行通信,常用 JSON 格式传输数据。示例:GET 请求获取用户信息

import requests response = requests.get("https://userinfo.com/users/1") user = response.json()print(user)

2.REST API 的工作原理

REST API 把所有东西看作资源,每个资源都有一个唯一的 URI(比如网址)。你可以通过不同的 HTTP 动词(GET、POST、PUT、DELETE 等)来操作这些资源。

GET/users:获取所有用户 POST/users:创建新用户 GET/users/{id}:获取特定用户 PUT/users/{id}:更新特定用户 DELETE/users/{id}:删除特定用户 

RESTful API

RESTful API 是指那些遵循 REST 原则的 API。其实,REST API 和 RESTful API 可以看作是同一个东西。

1.技术细节和示例代码:

RESTful API 设计需要遵循一些最佳实践,如资源命名规范、版本控制等。示例:POST 请求创建新用户

import requests user_data ={"name":"John Chen","username":"Johnchen","email":"[email protected]"} response = requests.post("https://userinfo.com/users", json=user_data) new_user = response.json()print(new_user)

2.REST API 的设计原则

资源的表示:所有的资源都有自己的 URI。
状态转移:客户端和服务器之间通过 HTTP 动词进行状态转移。
超媒体(HATEOAS):响应中包含下一步操作的链接。

总结

概念对比

概念对比

性能和效率对比

在这里插入图片描述

安全性对比

在这里插入图片描述

Read more

【论文阅读】Gaussian Grouping: Segment and Edit Anything in 3D Scenes

【论文阅读】Gaussian Grouping: Segment and Edit Anything in 3D Scenes

摘要 高斯投影(Gaussian Splatting)实现了高质量、实时的三维场景新视点合成。不过,它仅专注于外观和几何建模,缺乏对细粒度的物体级场景理解。为了解决这一问题,我们提出了 Gaussian Grouping,将高斯点扩展为联合重建和分割开放世界三维场景中的任意内容。我们为每个高斯添加了一个紧凑的身份编码(Identity Encoding),使得这些高斯点能够根据其在三维场景中的物体实例或“物体/背景”的成员关系进行分组。并不依赖昂贵的三维标签,我们在可微渲染过程中通过利用 Segment Anything Model (SAM) 的二维掩码预测,以及引入的三维空间一致性正则化,对身份编码进行监督。与隐式的 NeRF 表示相比,我们表明离散且分组的三维高斯点能够在三维中以高视觉质量、细粒度和高效性来重建、分割和编辑任意内容。 引言 本文旨在构建一个 expressive 的三维场景表示,不仅对外观和几何进行建模,还捕捉场景中每个实例和物体的身份信息。我们的方法以最近的三维高斯投影(Gaussian Splatting)为基础,将其从纯粹的三维重建扩展到细粒度的场景

【ROS 2】运行 ROS 2 机器人 ( ROS 2 机器人示例 - 海龟仿真器 | ROS 节点分析工具 - rqt | ros2 run 命令解析 | ros2 run 基础格式和完整格式 )

【ROS 2】运行 ROS 2 机器人 ( ROS 2 机器人示例 - 海龟仿真器 | ROS 节点分析工具 - rqt | ros2 run 命令解析 | ros2 run 基础格式和完整格式 )

文章目录 * 一、ROS 2 机器人示例 - 海龟仿真器 * 1、启动海龟仿真器节点 * 2、启动控制节点 * 3、ROS 节点分析工具 - rqt * 二、ros2 run 命令解析 * 1、设计理念 * 2、ros2 run 基础格式 * 3、ros2 run 完整格式 * 4、启动海龟仿真器命令分析 在上一篇博客 【ROS 2】ROS 2 Humble 完整环境配置 ( VirtualBox 7.2.4 + Ubuntu 22.04.5 LTS + ROS 2

政安晨【零基础玩转开源AI项目】OpenClaw飞书通信端机器人配置指南(手把手配置OpenClaw飞书/Lark机器人,实现多渠道AI助手集成)(作者自己配置时留存使用,小伙伴们可酌情参考)

政安晨【零基础玩转开源AI项目】OpenClaw飞书通信端机器人配置指南(手把手配置OpenClaw飞书/Lark机器人,实现多渠道AI助手集成)(作者自己配置时留存使用,小伙伴们可酌情参考)

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 目录 一、前言 1.1 为什么需要配置飞书机器人? 1.2 飞书机器人支持的功能 二、准备工作 2.1 环境要求 2.2 OpenClaw安装(本篇主要介绍飞书端的配置,这里可参考我上一篇博客) 2.3 飞书账号要求 三、飞书应用创建 3.1 创建企业应用 3.2 获取应用凭证 编辑3.3 开通权限 3.4 配置事件订阅 Webhook URL配置 订阅事件 3.5