弄清楚这些接口(http,https,api,RPC,webservice,Restful api ,OpenAPI)

2023-12-29 21:33:11

在测试和开发过程中,不同的服务,不同的架构系统间的调用都会根据系统本身选择不同的接口进行请求和数据传输,这里总结一下各种协议接口的异同和适用场景~~

一. 接口定义

?1.http接口

http是一种传输超文本向本地浏览器的传输协议,

  • HTTP接口:使用HTTP协议进行通信的接口,通过请求和响应进行数据交互,常见的有GET、POST、PUT、DELETE等方法。

2.https接口

HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议
https基于HTTP开发,使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版。

也可以说https=http+ssl

3.api接口

api是应用编程接口,主要应用与程序间,通常不暴露外部使用,仅在系统间调用

提供软件组件间的交互接口,可以用于不同软件之间的数据交换。

通常开发进行API技术评审,评审的就是这些内部接口的逻辑

4.rpc接口

rpc是一远程过程调用接口,通常用于分布式或微服务架构的项目

远程过程调用接口,用于在不同计算机或进程间进行通信和调用,实现分布式系统的功能集成

一些常见的RPC接口:
gRPC:由Google开发的高性能、跨语言的RPC框架,基于Protocol Buffers进行数据传输和序列化,支持多种编程语言。
Apache Thrift:由Apache基金会开发的跨语言的RPC框架,支持多种传输协议和序列化格式,包括二进制、JSON、XML等,可用于各种编程语言。
Apache Dubbo:由阿里巴巴开发的高性能、轻量级的RPC框架,支持多种传输协议和序列化格式,适用于Java生态圈。
Spring Cloud Netflix:Spring Cloud的一部分,提供了基于Netflix开源的RPC框架,如Feign和Ribbon,用于构建微服务架构。
gRPC-Web:gRPC的Web版本,使得浏览器或移动端可以直接调用gRPC接口,通过HTTP/1.1进行传输

5.WebService 接口

使用标准的Web服务协议(如SOAP、WSDL)进行通信的接口,用于不同平台和语言之间的互操作。

6.Restful api 接口

基于REST架构风格的接口,使用HTTP协议的GET、POST、PUT、DELETE等方法进行数据交互,强调资源的状态转移

7.openApi接口

是一种基于开放标准的API接口,用于描述和定义Web服务的功能、请求和响应等信息。它使用JSON或YAML格式的文档来描述API,包括接口地址、请求方法、参数、返回数据结构等。

二. 区别

1.http和https区别

HTTPS和HTTP的区别:

(1)https协议需要到申请证书,一般免费证书很少,需要交费,htpp不需要申请证书
(2)http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议,信息是加密传输
(3)http和https用的端口不一样,前者是80,后者是443。
(5)HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全

https协议适用场景:

https较http传输时数据有加密所以更具有安全性

银行网站、支付网关、购物网站、登录页、电子邮件以及一些企业部门的网站应该使用 HTTPS

2.rpc和webservice区别

协议和传输方式:
RPC接口使用自定义的协议进行通信,传输方式可以是TCP、UDP等。
Webservice接口使用标准的Web服务协议,如SOAP、WSDL等,传输方式通常是HTTP或HTTPS。

技术实现和调用方式:
RPC接口通常使用特定的RPC框架进行实现和调用,如gRPC、Thrift等,它们提供了更高效、更紧凑的数据传输和序列化方式。
Webservice接口通常使用SOAP协议进行实现和调用,可以通过SOAP客户端库进行调用。

数据交互格式:
RPC接口的数据交互格式可以是二进制格式,如Protocol Buffers,也可以是JSON或XML等文本格式。
Webservice接口的数据交互格式通常是XML,但也可以使用JSON等其他格式。

3.http和rpc区别

HTTP接口和RPC接口的主要区别如下:
协议和传输方式:
?? - HTTP接口使用HTTP协议进行通信,传输方式通常是通过TCP/IP。
?? - RPC接口使用自定义的协议进行通信,传输方式可以是TCP、UDP等。

技术实现和调用方式:
?? - HTTP接口通常使用RESTful架构进行实现和调用,通过HTTP请求方法(如GET、POST、PUT、DELETE)进行调用。
?? - RPC接口通常使用特定的RPC框架进行实现和调用,如gRPC、Thrift等,通过RPC调用方法进行调用。

数据交互格式:
?? - HTTP接口的数据交互格式可以是多种,包括JSON、XML等,通过请求头中的Content-Type进行指定。
?? - RPC接口的数据交互格式可以是二进制格式,如Protocol Buffers,也可以是JSON或XML等文本格式。

使用场景:
?? - HTTP接口适用于Web应用程序间的数据交互,常见于前后端的通信,也可以用于对外提供API接口。
?? - RPC接口适用于分布式系统的组件间通信,实现功能的调用和协作,常见于微服务架构中的服务间调用。

总的来说,HTTP接口更注重通用性和简单性,适用于Web应用程序间的数据交互;而RPC接口更注重性能和效率,适用于分布式系统间的组件通信。
RPC接口通常采用二进制传输和自定义协议,具有更高的效率和低延迟,但相对于HTTP接口更复杂一些。

三.适用场景

  • HTTP接口:适用于Web应用程序间的数据交互,常见于前后端的通信。
  • HTTPS接口:适用于对数据传输安全性要求较高的场景,如用户登录、支付等敏感信息的传输。
  • API接口:适用于不同软件之间的数据交换和集成,常见于第三方服务的接入和使用。
  • RPC接口:适用于分布式系统的组件间通信,实现功能的调用和协作。
  • Webservice接口:Webservice接口更适用于跨平台、跨语言的通信,例如企业间的系统集成,通常用于较为复杂的业务流程和数据交换
  • RESTful API:适用于基于REST架构风格的Web服务,提供资源的管理和状态转移。常见于移动应用的后端接口
  • ? OpenAP I接口适用于描述和管理Web服务的API,可以用于构建和管理API文档、进行API测试和调试等。它适用于任何需要提供和使用API的场景,包括企业内部的系统集成、第三方开发者的接入等。OpenAPI接口的标准化和规范化使得API的设计、开发和使用更加简便和方便

四.如何调用测试

1、http接口测试

import requests

# POST请求示例
def http_post_request():
    url = "http://example.com/api"
    headers = {"Content-Type": "application/json"}
    data = {"param1": "value1", "param2": "value2"}
    
    response = requests.post(url, headers=headers, json=data)
    if response.status_code == 200:
        result = response.json()
        # 处理返回的数据
        print(result)
    else:
        print("Request failed")

# GET请求示例
def http_get_request():
    url = "http://example.com/api?param1=value1&param2=value2"
    
    response = requests.get(url)
    if response.status_code == 200:
        result = response.json()
        # 处理返回的数据
        print(result)
    else:
        print("Request failed")

# 调用示例函数
http_post_request()
http_get_request()

?2、rpc之dubbo接口测试

先安装

pip install pydubbo

后调用

from pydubbo import DubboClient

def dubbo_request():
    # 创建Dubbo客户端
    client = DubboClient('zookeeper://localhost:2181')
    
    # 设置服务和方法名
    service = 'com.example.service.ExampleService'
    method = 'exampleMethod'
    
    # 设置请求参数
    params = {'param1': 'value1', 'param2': 'value2'}
    
    # 调用远程方法
    response = client.invoke(service, method, **params)
    
    # 处理返回结果
    print(response)

# 调用示例函数
dubbo_request()

文章来源:https://blog.csdn.net/gzl0524/article/details/88226215
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。