关于dubbo接口rest服务怎么测试的信息

网友投稿 304 2023-04-20


本篇文章给大家谈谈dubbo接口rest服务怎么测试,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享dubbo接口rest服务怎么测试的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

关于jmeter测试dubbo接口方式

本文章介绍如何使用jmeter测试dubbo接口,涉及如下两种方式

1.使用官方dubbo版本包测试dubbo接口

2.通过自己编写java请求插件,实现dubbo调用

选择方式1或方式2并没有什么区别,取决于部分自研公司对dubbo进行dubbo接口rest服务怎么测试了封装,导致官方提供dubbo接口rest服务怎么测试的dubbo包并不适用于方式1,则可以通过方式2去调用

https://github.com/ningyu1/jmeter-plugins-dubbo/releases
解压tar将获取到的jar包放入${JMETER_HOME}\lib\ext路径下(这里获取到的jar包为jmeter-plugins-dubbo-2.7.1-jar-with-dependencies)dubbo接口rest服务怎么测试,重启jmeter应用(这里重启完应用会添加取样器会多出一个dubbo sample)

右键添加,选择线程-线程组

2.光标对准线程组右键添加-取样器-dubbo sample

此处需要关注,当方法接收的是一个String,或者List等类型的参数,可参照截图配置
那么当方法接收的参数是一个对象时,需要获取对接接口的api jar包并关联到当前测试计划
选中测试计划,点击下方浏览按钮,选择对应的jar包

传参的具体方式可参照如下

接口1返回:

接口2返回

看了下网上的大多请求都是单接口请求dubbo,这样就会导致,每次有新的接口的时候都得去更新新的请求,这里提供一个一劳永逸的方法,通过泛化调用,实现一个jar请求可适配所有接口,一般看到这个文章的可能大多都是测试的同学,对于当前方法需要对java有一定的基础,所以这个时候就体验到学习的重要性了,下面开始操作吧

file-new-project,选择maven

输入组织-坐标后点击next

按需配置名称路径后点击finsh

pom.xml配置如下

实现方式如下

打包操作

左侧窗口为生成的jar包和lib目录

这里要说明下,网上提供了一种方式,通过修改安装目录bin下jmeter.properties文件关联lib下的依赖
文件中增加如下(通过尝试,这么做会导致jmeter启动由于jar包加载顺序的问题,ui部分控件不可用)

这里我使用的是另一种更为简便的方式
将原安装目录lib下ext修改为extbak
新建ext,并将工程lib下的jar包和dobbo-jmeter-interface-1.0-SNAPSHOT.jar放入之
由于可能会用到随机函数,从extbak获取ApacheJMeter_functions.jar,也放入到新建的ext目录下
重启jmeter,稍等片刻

添加java请求

添加结果树

点击运行后,结果树信息如下

后续可自行配置断言和随机参数等

restclient怎么测接口

基于webservice开发第三方应用程序,第三方API属于rest接口,而开发过程中难免需要测试,于是寻找测试rest接口的工具,现在主要用两种常用的工具:restclient和soupUI

一、使用restclient测试rest接口

RESTClient是一个用于测试RESTful Web services的Java客户端。

二、使用soapUI测试rest接口

虽然soapUI看上去好像是测试soap接口的,其实用它来测试rest接口未尝不可。

说明:目前只有test/xml格式成功实现,其他格式待探索。

soapUI由于目前消息体只有test/xml,multipart/form-data,application/xml,这三个选项,而在restclient工具中有几十种消息体格式,所以soapUI的使用还待进一步研究。

目前以合同添加接口为例

地址:http://adsettlement.test.360buy.com/rest/contractinfo.action

消息体类型是:text/xml,content-type=text/xml和charset=utf-8

方法是:POST

消息体:

<ContractInfo
<adsContractState0</adsContractState
<applyNo26</applyNo
<contractAmount550000</contractAmount
<contractBeginTime2012-08-13T10:55:04.336+08:00</contractBeginTime
<contractEndTime2013-08-13T10:55:04.336+08:00</contractEndTime
<contractNo20120026</contractNo
<createTime2012-08-13T10:55:04.336+08:00</createTime
<departmentNo0</departmentNo
<depositAmount120000</depositAmount
<hasDeposit1</hasDeposit
<isFrameContract0</isFrameContract
<invoiceType0</invoiceType
<isHasFrameContract0</isHasFrameContract
<isUpdatedContract0</isUpdatedContract
<plan_id0000026</plan_id
<plan_namepk</plan_name
<projectNo20120026</projectNo
<salesmanName赵玉梅</salesmanName
<settlementContractState1</settlementContractState
<AdsInfo
<parta_no7</parta_no
<parta_namezymtest7</parta_name
<partb_no14</partb_no
<partb_name京东商城</partb_name
<ads_amount280000</ads_amount
<has_deposit1</has_deposit
<deposit_amount90000</deposit_amount
<pay_account_deadline2012-10-30</pay_account_deadline
<last_charge_time2012-10-30</last_charge_time
</AdsInfo
<AdsInfo
<parta_no8</parta_no
<parta_namezymtest8</parta_name
<partb_no14</partb_no
<partb_name京东商城</partb_name
<ads_amount220000</ads_amount
<has_deposit1</has_deposit
<deposit_amount40000</deposit_amount
<pay_account_deadline2012-09-30</pay_account_deadline
<last_charge_time2012-9-30</last_charge_time
</AdsInfo
</ContractInfo

备注:其中<adsinfo可以增加,增加整个list即可

操作步骤

1、打开soapUI,创建工程

如图,右键,点击New soapUI Project

2、弹出创建工程窗口

在project name中输入工程名称,如Test,rest 接口勾选Add REST Service(这个必须勾选),点击“OK”按钮

3、弹出创建新rest服务页面,输入接口的域名地址,勾选opens dialog to create a REST Resource,点击“OK”按钮

4、弹出New REST Resource窗口,输入名称输入resource URL,点击“OK”按钮

5、弹出 New REST Method窗口,输入方法名称,选择API方法,点击“OK”按钮

6、创建请求成功,request请求页面如下

7、选择消息体格式,输入认证密码,输入消息体:

8、执行,查看执行结果:

9、在outline界面可以修改参数:

SpringBoot的RestApi接口的单元测试

记录一下SpringBoot的RestApi接口的单元测试

1.使用的junit单元测试框架,所以需要加入依赖。

2.如果是jar项目dubbo接口rest服务怎么测试,就在单元测试的类上标注下面两个注解。

3.如果是web项目dubbo接口rest服务怎么测试,则还需要添加下面这个注解。

4.因为测试的是rest接口,所以,需要引入下面的请求发送工具(其dubbo接口rest服务怎么测试他的也可以)。

5.因为是针对本项目,所以通常还会添加一个属性,和一个方法。

6.这样的话,当需要编写单元测试的时候,只要直接继承该类即可。

如何在springMVC 中对REST服务使用mockmvc 做测试

spring 集成测试中 对mock 的集成实在是太棒了!但是使用请注意一下3个条件。

junit 必须使用4.9以上

同时您的框架必须是用spring mvc

spring 3.2以上才完美支持

目前使用spring MVC 取代struts2 的很多,spring MVC 的各种灵活让人无比销魂!所以使用spring MVC吧!

以前在对接口(主要是java服务端提供的接口(一般是:webService,restful))进行测试的中 一般用以下俩种方法。测试流程如图:

1 直接使用httpClient

 这方法各种麻烦

2 使用Spring 提供的RestTemplate

 错误不好跟踪,必须开着服务器

使用mockMVC都不是问题了看使用实例:

使用事例如下:父类

import org.junit.runner.RunWith;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import org.springframework.test.context.web.WebAppConfiguration;

import org.springframework.web.context.WebApplicationContext;

@WebAppConfiguration

@ContextConfiguration(locations = { "classpath:applicationContext.xml",  

"classpath:xxxx-servlet.xml" })

public class AbstractContextControllerTests {

 @Autowired

 protected WebApplicationContext wac;

}

子类:

import org.junit.Before;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.http.MediaType;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import org.springframework.test.web.servlet.MockMvc;

import org.springframework.test.web.servlet.setup.MockMvcBuilders;

import com.conlect.oatos.dto.status.RESTurl;

import com.qycloud.oatos.server.service.PersonalDiskService;

//这个必须使用junit4.9以上才有。

@RunWith(SpringJUnit4ClassRunner.class)

public class PersonalDiskMockTests extends AbstractContextControllerTests {

 

 

 private static String URI = RESTurl.searchPersonalFile;

 private MockMvc mockMvc;

 

 private String json ="{\"entId\":1234,\"userId\":1235,\"key\":\"new\"}";

 

 @Autowired

 private PersonalDiskService personalDiskService;

 @Before

 public void setup() {

     //this.mockMvc = webAppContextSetup(this.wac).alwaysExpect(status().isOk()).build();

     this.mockMvc = MockMvcBuilders.standaloneSetup(personalDiskService).build();

 }

@Test

 public void readJson() throws Exception {

     this.mockMvc.perform(

             post(URI, "json").characterEncoding("UTF-8")

                 .contentType(MediaType.APPLICATION_JSON)

                 .content(json.getBytes()))

             .andExpect(content().string("Read from JSON: JavaBean {foo=[bar], fruit=[apple]}")

                 );

 }

上面是简单的例子,实际使用起来可以稍做修改。记得导入spring -test jar 包。无需额外配置(是不是很方便!)

当然和junit 的assert 一起用的话效果更好。下面贴点例子。copy就能跑。

Java代码

package com.qycloud.oatos.server.test.mockmvcTest;

import static org.junit.Assert.fail;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;

import java.io.UnsupportedEncodingException;

import java.lang.reflect.Field;

import org.springframework.http.MediaType;

import org.springframework.test.web.servlet.MockMvc;

import com.conlect.oatos.dto.status.CommConstants;

import com.conlect.oatos.dto.status.ErrorType;

import com.conlect.oatos.http.PojoMapper;

public class MockUtil {

 /**

  * mock

  *

  * @param uri

  * @param json

  * @return

  * @throws UnsupportedEncodingException

  * @throws Exception

  */

 public static String mock(MockMvc mvc, String uri, String json)

         throws UnsupportedEncodingException, Exception {

     return mvc

             .perform(

                     post(uri, "json").characterEncoding("UTF-8")

                             .contentType(MediaType.APPLICATION_JSON)

                             .content(json.getBytes())).andReturn()

             .getResponse().getContentAsString();

 }

 

 /**

  *

  * @param re 返回值

  * @param object 要转换的对象

  * @param testName 当前测试的对象

  */

 public static <T void check(String re, Class<T object,String testName) {

     System.out.println(re);

     if (ErrorType.error500.toString().equals(re)) {

         System.out.println("-----该接口测试失败:-----"

                 + testName);

         fail(re);

     } else if (CommConstants.OK_MARK.toString().equals(re)) {

         System.out.println("-----该接口测试成功:-----"

                 + testName);

     }else{

         System.out.println("-----re----- :"+re);

     }

     if (object != null) {

         if (re.contains(":")) {

             try {

                 T t = PojoMapper.fromJsonAsObject(re, object);

                 System.out.println("-----该接口测试成功:-----"

                         + testName);

             } catch (Exception e) {

                 System.out.println("-----该接口测试失败:-----"

                         + testName);

                 fail(e.getMessage());

             }

         }

     }

 }

 /**

  * 初始化版本信息。每次调用测试用力之前首先更新版本信息

  * @param mockMvc

  * @param url

  * @param fileId

  * @param class1

  * @return

  * @throws UnsupportedEncodingException

  * @throws Exception

  */

 public static <T Long updateVersion(MockMvc mockMvc, String url,

         Long fileId, Class<T class1) throws UnsupportedEncodingException, Exception {

     

     String re = mock(mockMvc, url, fileId+"");

     

     T dto = PojoMapper.fromJsonAsObject(re, class1);

     

Long version = Long.parseLong(dto.getClass().getMethod("getVersion").invoke(dto).toString());  

     System.out.println("version = "+version);

     

     return version;

     

 }

 

}

使用如下:

Java代码

@RunWith(SpringJUnit4ClassRunner.class)

public class PersonalDiskMockTests extends AbstractContextControllerTests {

 private MockMvc mockMvc;

 private static Long entId = 1234L;

 private static Long adminId = 1235L;

 @Autowired

 private PersonalDiskService personalDiskService;

 @Before

 public void setup() {

     this.mockMvc = MockMvcBuilders.standaloneSetup(personalDiskService)

             .build();

 }

 /***

  * pass

  * 全局搜索企业文件

  *

  * @throws Exception

  */

 @Test

 public void searchPersonalFile() throws Exception {

     SearchFileParamDTO sf = new SearchFileParamDTO();

     sf.setEntId(entId);

     sf.setKey("li");

     sf.setUserId(adminId);

     String json = PojoMapper.toJson(sf);

     String re = MockUtil.mock(this.mockMvc, RESTurl.searchPersonalFile,

             json);

     MockUtil.check(re, SearchPersonalFilesDTO.class, "searchPersonalFile");

 }

当然@setup里面是每个@test执行时都会执行一次的,所以有些需要每次都实例化的参数可以放进来

如下:

Java代码

@Autowired

 private ShareDiskService shareDiskService;

 @Before

 public void setup() {

     this.mockMvc = MockMvcBuilders.standaloneSetup(shareDiskService)

             .build();

     try {

         initDatas();

     } catch (Exception e) {

         e.printStackTrace();

     }

 }

 

 private void initDatas() throws UnsupportedEncodingException, Exception {

     FileIdVersion = MockUtil.updateVersion(mockMvc,RESTurl.getShareFileById,FileId,ShareFileDTO.class);

     File2IdVersion = MockUtil.updateVersion(mockMvc,RESTurl.getShareFileById,File2Id,ShareFileDTO.class);

     oldPicFolderVersion = MockUtil.updateVersion(mockMvc,RESTurl.getShareFolderById,oldPicFolderId,ShareFolderDTO.class);

 }

ok!基本使用大致如此,代码没有些注释,但是很简单,看懂是没问题的。权当抛砖引玉。希望大家加以指正!

Dubbo的基本使用

官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/loadbalance
如果在消费端和服务端都配置了负载均衡策略,以消费端为准。

在服务提供者和服务消费者上都可以配置服务超时时间,这两者是不一样的。

消费者调用一个服务,分为三步:
1.消费者发送请求(网络传输)
2.服务端执行服务
3.服务端返回响应(网络传输)

如果在服务端和消费端各配置了一个timeout,那就比较复杂了,假设
1.服务执行为5s
2.消费端timeout=3s
3.服务端timeout=6s
那么消费端掉用服务时,消费端会收到超时异常(因为消费端超时了),服务端一切正常(服务端没有超时)。

官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/fault-tolerent-strategy/
集群容错表示:服务消费者在掉用某个服务时,这个服务有多个服务提供者,在经过负载均衡后选择其中一个服务提供者之后进行调用,但调用报错后,Dubbo所采取的后续处理策略。

官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/example/service-downgrade/

服务降级表示:服务消费者在调用某个服务提供者时,如果该服务提供者报错了,所采取的措施。

集群容错和服务降级的区别在于:
1.集群容错时整个集群范围内的容错
2.服务降级时单个服务提供者的自身容错

官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/local-stub/
本地存根:名字很抽象,但实际上不难理解,本地存根就是一段逻辑,这段逻辑是在服务消费端执行的,这段逻辑一般都是由服务提供者提供,服务提供者可以利用这种机制在服务消费者远程调用服务提供者之前或之后再做一些其他事情,比如结果缓存,请求参数验证等等。

官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/local-mock
本地伪装就是Mock,Dubbo中的Mock的功能相对于本地存根更简单一点,Mock其实就是Dubbo中的服务容错的解决方案。

官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/callback-parameter/
如果当前服务支持参数回调,意思就是对于某个服务接口中的某个方法,如果想支持消费者在调用这个方式时能设置回调逻辑,那么该方法就是需要提供一个入参用来表示回调逻辑
因为Dubbo协议是基于长连接,所以消费者在两次调用同一个方法想指定不同的回调逻辑,那么就需要在调用时在指定一定key进行区分。

官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/async-call/
理解起来比较容易,主要要理解CompletableFuture,如果不理解,就直接把它理解为Future
其他异步调用方式: https://mp.weixin.qq.com/s/U3eyBUy6HBVy-xRw3LGbRQ

官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/example/generic-reference/
泛化调用可以用来做服务测试。
在Dubbo中,如果某个服务想要支持泛化调用,就可以将该服务的generic属性设置为true,那对于服务消费者来说,就可以不用依赖该服务的接口,直接利用GenericService接口来进行服务调用

官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/generic-service/
实现了GenericService接口就是泛化服务

官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/rest/

github地址: https://github.com/apache/dubbo-admin

官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/config-rule/
注意动态配置修改的是服务参数,并不能修改服务的协议,IP,PORT,VERSION,GROUP,因为这5个信息是服务的标识信息,是服务的身份证号,是不能修改的。

官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/example/routing-rule/

https://zhuanlan.zhihu.com/p/42671353

Dubbo——服务调用、服务暴露、服务引用过程

1、InvokerInvocationHandler jdk动态代理

5、RegistryDirector返回Invokers
Router分为dubbo接口rest服务怎么测试:Script 脚本路由、Condition 条件路由

6、通过MockInvokersSelectordubbo接口rest服务怎么测试的route方法(getNormalInvokers)拿到能正常执行的invokers

8、当回到AbstractClusterInvoker后dubbo接口rest服务怎么测试,执行(默认FailoverClusterInvoker,根据配置的是,Failfast Cluster(快速失败) , Failsafe Cluster(失败安全) , Failback Cluster(失败自动恢复) , Forking Cluster(并行调用多个服务器,只要一个成功即返回) , Broadcast Cluster(广播调用所有提供者,逐个调用,任意一台报错则报错))doInvoker方法

9、FailoverClusterInvoker调用AbstractClusterInvoker的select方法

10、执行doSelect方法

11、调用AbstractLoadbalance的select方法

12、根据配置的负载均衡策略调用对应的(如RoundRobinLoadBalance)类的doSelect方法

13、返回invokers.get()方法

14、调用FailoverClusterInvoker的invoke方法

均继承自抽象类AbstractDirectory

Directory 获取 invoker 是从 methodInvokerMap 中获取的,主要都是读操作,那它的写操作是在什么时候写的呢?就是在回调方法 notify 的时候操作的,也就是注册中心有变化,则更新 methodInvokerMap 和 urlInvokerMap 的值

根据dubbo-admin配置的路由规则来过滤相关的invoker,当dubbo接口rest服务怎么测试我们对路由规则点击启用,就会触发 RegistryDirectory 类的 notify 方法。

notify方法调用refreshInvoker方法。

route方法的实现类为ConditionRoute 根据条件进行过滤

1、调用mathThen方法

2、调用matchCondition方法

3、调用isMatch判断

4、调用isMatchGlobPattern方法

​ 集群模块是服务提供者和服务消费者的中间层,为服务消费者屏蔽了服务提供者的情况,这样服务消费者就可以专心处理远程调用相关事宜。比如发请求,接受服务提供者返回的数据等。这就是Dubbo Cluster集群的作用。

通过cluster来指定集群容错方式

其实就是应对出错情况采取的策略

用于有状态服务,尽可能让客户端总是向同一提供者发起调用,除非提供者挂了,再连另一台,自动开启延迟链接,以减少长接数

​ 启动时服务提供者将当前进程启动时间注册到ZK;服务消费者发现该节点后计算服务启动时间(相对当前时间),在默认预热时间的前20%时间内,该节点权重始终固定为2,这样客户端的负载均衡器只会分发极少的请求至节点。

​ 在预热时间之后的80%时间内,该节点权重将随着时间的推移而线性增长;待预热时间到期后,权重自动恢复为默认值100;负载均衡器的内核是一个标准的WLC算法模块,即加权最少连接算法;

​ 如果某个节点Hang住或宕机,其权重会迅速自动调节降低,避免持续性影响;当节点下线时,服务端提前触发权重调节,重载默认权重至1并发布到注册中心,服务消费者将迅速感知到该事件;
服务提供者优雅下线步骤(注意这套逻辑仅在服务端执行)在ok.htm?down=true对应的controller中加入下列逻辑,注意要判断down是否为true,因为正常来说false表示启动验证而不是关机

服务者消费者配置

dubbo服务支持参数动态调整,例如动态调整权重,但dubbo实现方式较为特殊,并不是常规思路。

​ ServiceConfig类拿到对外提供服务的实际类ref,然后通过ProxyFactory类的getInvoker方法使用ref生成一个AbstractProxyInvoker实例,到这一步就完成具体服务到Invoker的转换(javassistProxyFacory、JdkProxyFactory),接着要做Invoker转换到Export的过程

​ 服务发布:本地暴露、远程暴露

​ 为什么会有 本地暴露 和 远程暴露 呢?不从场景考虑讨论技术的没有意义是.在dubbo中我们一个服务可能既是 Provider ,又是 Consumer ,因此就存在他自己调用自己服务的情况,如果再通过网络去访问,那自然是舍近求远,因此他是有 本地暴露 服务的这个设计.从这里我们就知道这个两者的区别

1、spring启动,解析配置文件

2、创建dubbo标签解析器

3、解析dubbo标签

4、ServiceBean解析

5、容器创建完成,触发ContextRefrestEvent

6、export暴露服务

7、duExportUrls

8、doExportUrlsFor1Protocol

9、getInvoker

10、protocol.export

11、开启服务器 openServer()如nettyServer

12、注册服务到注册中心 registerProvider

Filter 在服务暴露前,做拦截器初始化,在加载所有拦截器时会过滤支队provider生效的数据。

可以。zookeeper的信息会缓存到本地作为一个缓存文件,并且转换成 properties 对象方便使用。建立线程池,定时检测并连接注册中心,失败了就重连。

注册服务到zk其实就是在zk上创建临时节点,当节点下线或者down掉时,即会删除临时节点,从而使服务从可用列表中剔除。

持久节点

临时节点

1、export的时候进行zk订阅

2、设置监听回调的地址,回调给FailbackRegistry的notify

3、创建持久节点

4、设置对该节点的监听

5、更新新的服务信息,服务启动和节点更新回调,都会调用到这里

6、更新缓存文件

7、对比新旧信息是否有变化,有则重新暴露服务

高并发大业务量情况下,暂时屏蔽边缘业务

MockClusterInvoker

​ SPI 全称为 Service Provider Interface,是一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过 SPI 机制为我们的程序提供拓展功能。SPI 机制在第三方框架中也有所应用,比如 Dubbo 就是通过 SPI 机制加载所有的组件。不过,Dubbo 并未使用 Java 原生的 SPI 机制,而是对其进行了增强,使其能够更好的满足需求。在 Dubbo 中,SPI 是一个非常重要的模块。基于 SPI,我们可以很容易的对 Dubbo 进行拓展。如果大家想要学习 Dubbo 的源码,SPI 机制务必弄懂。接下来,我们先来了解一下 Java SPI 与 Dubbo SPI 的用法,然后再来分析 Dubbo SPI 的源码。

关于dubbo接口rest服务怎么测试和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 dubbo接口rest服务怎么测试的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、dubbo接口rest服务怎么测试的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:vue教程之toast弹框全局调用示例详解
下一篇:Java实现LRU缓存的实例详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~