开发者学堂课程【RocketMQ 知识精讲与项目实战(第二阶段):Rest 测试准备工作】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/703/detail/12442
Rest 测试准备工作
内容介绍:
一、Rest 测试准备工作
二、总结
一、Rest测试准备工作
Pay-web 补充完整
Name:com.itheima.shop.PayWebApplication
@EnableDubboConfiguration
@SpringBootApplication
public class PaywebApplication {
public static void main(string[] args) {
springApplication.run(PaywebApplication.class,args);
}
}
Web 端启动时使用的 mpom 插件启动,插件是不能冲突的
OrderWeb 在8080上启动,在 pay-web 要进行修改,在 Spring boot 上
server.host=http:// localhost
server.servlet.path=/pay-web
server. port=
9090
server. port 改成9090
启动
发起 http 请求分别访问 orderController 与 PayController 两个方法
传递 json 格式数据
微服务开发后,是一个前后端分离的项目架构
对服务端人员,不考虑前端项目的处理,只需要对请求使用测试
没有界面使用 RestTemplate 测
首先在两个 web 端加入 RestTemplate
使用 RestTemplate,首先配置成一个密码
RestTemplate 本身不提供 http 客户端的请求,需要借助于架包完成客户端请求的发起,使用 http client 发起请求,RestTemplate 分装,先将 RestTemplate 进行配置
在两个客户端建立 config 包
创建 RestTemplateConfig
@Configuration
public class RestTemplateconfig
{
@Bean
@
conditiona1onMissingBean({ Restoperations.c1ass,RestTemplate.class })
public RestTemplate
restTemplate(c1ientHttpRequestFactory factory) {
RestTemplate restTemplate = new RestTemplate(factory);
//使用utf-8编码集的 conver 替换默认的 conver(默认的 string conver 的编码集为"ISo-8859-1")
List<HttpMessageconverter<?>> messageconverters =
restTemplate.getMessageconverters();
Iterator <HttpMessageconverter<?>> iterator =
messageconverters.iterator();
while (iterator. hasNext() {
HttpMessageconverter<?> converter = iterator. next(
)
;
if (converter instanceof stringHttpMessageconverter)
{
iterator.remove(;
}
}
messageconverters.add(new
stringHttpMessageconverter(charset.forName("UTF-8")));
return restTemplate;
}
@
Bean
@
conditiona1onMissingBean({clientHttpRequestFactory.class})
public clientHttpRequestFactory
simplec1ientHttpRequestFactory( {
simplec1ientHttpRequestFactory factory = new
simplec1ientHttpRequestFactory();
// ms
factory.setReadTimeout(15000);
/
/ ms
factory. setconnectTimeout(15000);
return factory;
}
}
有一个 RestTemplate Bean 的配置,有专门的 c1ientHttpRequestFactory 第三方架包进行分装,导入simplec1ientHttpRequestFactory 工厂 bean,RestTemplate 分装,直接使用 RestTemplate 进行 http 订单发起
在上方加入@Configuration
在 pay-web 中加入 config 包,将 config 复制,两个工程是独立的
通过 RestTemplate 进行测试,准备工作完成
在配置文件中配置路径信息
两个 web 端启动时端口不能冲突,一个8080,一个9090,每个项目都有工程名,order-web 与 pay-web
在 order-web 中有 Dubbo 配置,
#dubbo
spring.application.name=dubbo-order-consumer
spring.dubbo.application.id=dubbo-order-consumer
spring.dubbo.application.name=dubbo-order-consumer
spring.dubbo.registry.address=zookeeper://
192.168.25.140:2181;zookeeper://192.168.25.140:2182;
shop.order.baseURI=${server.host}:${server.port}${server.servlet.path}
shop.order.confirm=/order
/
confirm
对本处进行处理,是 Dubbo 的消费方法
配置 zookeeper 集群的地址,配置当前访问路径,方便使用
请求地址时,将
shop.order.baseURI=${server.host}:${server.port}$
{server.servlet.path}
shop.order.confirm=/order
/
confirm
两个属性值拼接
在 pay-web 中
#dubbo
spring.application.name=dubbo-pay-consumer
spring.dubbo.application.id=dubbo-pay-consumer
spring.dubbo.application.name=dubbo-pay-consumer
spring.dubbo.registry.address=zookeeper://
192.168.25.140:2181;zookeeper://192.168.25.140:2182;
shop.pay.baseURI=${server.host}:${server.port}$
{server.servlet.path}
shop.pay.createPayment=/pay/createPayment
shop.pay.cal1backPayment=/pay/callbackPayment
baseURI 是 service.host 的主机加端口加项目名
有两种方法,一是下单 createPayment,一是 createPayment
将地址配置,测试时只需要将二者进行拼接,即为请求路径
二、总结
测试通过 RestTemplate 测试,配置 RestTemplate 的bean,bean 需要用的具体的 http client,在下方配置http client
配置文件中配置请求路径,便于测试