当前位置: 首页 > news >正文

咸阳网站建设工作室seo关键词优化策略

咸阳网站建设工作室,seo关键词优化策略,做英文网站建设,wordpress迁站文章目录 文章说明 一:Rest协议简介 二:搭建开发环境 1:父项目里边引入的新的版本内容 2:Api中的操作 3:Provider模块 三:编码 1:API模块 2:Provider模块 3:Co…

文章目录

文章说明

一:Rest协议简介

二:搭建开发环境

1:父项目里边引入的新的版本内容

2:Api中的操作

3:Provider模块

三:编码

1:API模块

2:Provider模块

3:Consumer模块


文章说明

本文内容整理自《孙哥说Dubbo系列视频课程》,孙帅老师课程细致、全面、深入、性价比极高。B站搜孙帅suns可以找到对应的试听视频,或者直接添加老师微信号suns45与他直接联系

一:Rest协议简介

Rest协议就是我们我们一开始基于SpringBoot或者是SpringMVC开发说的Restful,本质上把他称为协议不准确。本身因为Restful他是基于Http1.x协议的。但是在这里Dubbo指的Rest协议,本质上就是指的Http协议,只不过Dubbo在这里改了相应的命名。

一旦我们引入这种协议之后,我们在Dubbo中就会有一种新的有意思的调用方式产生了。之前,Consumer里边调用Provider的代理,基于Rest协议了,我们设置可以在浏览器中或者其他的客户端中进行调用了。

作为Dubbo为什么要支持Rest协议呢?他底层是基于Http协议的,协议层次比较高,运行效率比较低。Dubbo这么做是为了和SpringCloud这个技术栈进行整合。因为SpringCloud这个技术栈的Rpc是基于Http的。为了和他进行良好的整合,Dubbo才支持了这种协议方式。

二:搭建开发环境

我们研究Rest协议还是要按照之前的项目结构为基础。

1:父项目里边引入的新的版本内容

<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<dubbo.version>3.2.0</dubbo.version>
<spring-boot.version>2.7.12</spring-boot.version><jackson-version>1.9.13</jackson-version>
<resteasy-version>3.15.6.Final</resteasy-version>
<tomcat.version>9.0.75</tomcat.version></properties>

jackson-version的作用就是使用Http协议的时候,基于JSON进行数据的序列化。resteasy这个作用是为了发布rest的访问,我们之前在SpringMVC的时候由Rest的支持,但是我们使用Dubbo操作Http的时候,需要有这个一个RestFul的支持,这个是JBoss为我们提供的产品,用于发布Rest的访问。Tomcat主要是用于Http的访问。

我们知道,协议对于通信方式是有选择,dubbo协议,最好的通信方式是Netty,Rest协议或者说是Http协议他的最好的通信方式是服务器,服务器我们首选的就是Tomcat,所以我们还需要引入一个Tomcat依赖。

        <dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-rpc-rest</artifactId><version>${dubbo.version}</version><exclusions><exclusion><artifactId>jackson-core-asl</artifactId><groupId>org.codehaus.jackson</groupId></exclusion><exclusion><artifactId>jackson-jaxrs</artifactId><groupId>org.codehaus.jackson</groupId></exclusion><exclusion><artifactId>jackson-mapper-asl</artifactId><groupId>org.codehaus.jackson</groupId></exclusion><exclusion><artifactId>jackson-xc</artifactId><groupId>org.codehaus.jackson</groupId></exclusion></exclusions></dependency><dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-jackson-provider</artifactId><version>${resteasy-version}</version><exclusions><exclusion><artifactId>jackson-core-asl</artifactId><groupId>org.codehaus.jackson</groupId></exclusion><exclusion><artifactId>jackson-jaxrs</artifactId><groupId>org.codehaus.jackson</groupId></exclusion><exclusion><artifactId>jackson-mapper-asl</artifactId><groupId>org.codehaus.jackson</groupId></exclusion><exclusion><artifactId>jackson-xc</artifactId><groupId>org.codehaus.jackson</groupId></exclusion></exclusions></dependency>        <dependency><artifactId>jackson-core-asl</artifactId><groupId>org.codehaus.jackson</groupId><version>${jackson-version}</version></dependency><dependency><artifactId>jackson-jaxrs</artifactId><groupId>org.codehaus.jackson</groupId><version>${jackson-version}</version></dependency><dependency><artifactId>jackson-mapper-asl</artifactId><groupId>org.codehaus.jackson</groupId><version>${jackson-version}</version></dependency><dependency><artifactId>jackson-xc</artifactId><groupId>org.codehaus.jackson</groupId><version>${jackson-version}</version></dependency>

dubbo-rpc-rest:只要想让我们的Dubbo支持DubboRest,就必须导入这个依赖。

resteasy-jackson-provider:发布Rest服务

到这里我们的父项目就搭建完毕了。

2:Api中的操作

<properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

3:Provider模块

    <parent><groupId>com.suns</groupId><artifactId>dubbo-procolo-demo</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>dubbo-protocol-provider</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>com.suns</groupId><artifactId>dubbo-protocol-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><artifactId>tomcat-embed-core</artifactId><groupId>org.apache.tomcat.embed</groupId></exclusion></exclusions></dependency><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-core</artifactId><version>${tomcat.version}</version></dependency></dependencies>

Provider需要支持Rest访问,那么必须引入Tomcat来发布服务,spring-boot-starter-web这个起东器中包含了Tomcat,但是我们排除一下,使用自己引入的Tomcat。

4:Consumer模块

<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!--API 模块-->
<dependency>
<groupId>com.suns</groupId>
<artifactId>dubbo-dubbo-001-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>

三:编码

1:API模块

API模块主要是两个作用1:定义实体,2:定义服务接口

@Path("users")
@Consumes({MediaType.APPLICATION_JSON})
//client给服务器端 发送的请求数据 json @RequestBody
@Produces({ContentType.APPLICATION_JSON_UTF_8})
//服务器给client响应的数据 json @ResponseBody
public interface UserService {@GET // @GetMapping RequestMapping(method=get)@Path("{name}/{password}") //@PathVariablepublic User login(@PathParam("name") String name, @PathParam("password") String password);
}

@Path注解的作用就参照SpringMVC里边RequestMapping注解的作用,一旦在这个接口上添加完毕这个注解之后,就相当于往外边暴露了一个Rest接口,此时他的访问路径:

http://localhost:8080/应用名/users

@Consumes的作用就相当于SpringMVC当中的@RequestBody这个注解,告诉我们的请求者,这里边是一个JSON。也就是只有给我发JSON,我才能解析。

@Produces注解的作用就相当于SpringMVC或者是SpringBoot里边@RequestBody注解中的Produces的属性,也就是告诉我们的响应的结构是UTF-8的字符集编码的JSON,避免乱码的产生。

@Get注解的作用就是告诉采用Get的方式发起请求

http://localhost:8080/应用名/users/sunshuai/123456

然后,sunshuai和123456就会分别给到两个参数,然后接口就开是拿着这两个参数跑了。具体示例如下:

@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class Order {private String orderNo;private double price;
}import javax.ws.rs.*;
@Path("orders")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({ContentType.APPLICATION_JSON_UTF_8})
public interface OrderService {@GET@Path("{id}")Order getOrder(@PathParam("id") Long id);
}

注意这些注解的包! javax.ws.rs这个包下的注解是JavaEE规范中对标准RestFul的支持。

2:Provider模块

@DubboService
public class UserServiceImpl implements UserService {@Overridepublic User login(String name, String password) {System.out.println("UserServiceImpl.login name " + name + " password is " + password);return new User("孙帅", "123456");}
}

Provider是对接口的实现,并且把改该实现类发布为一个DubboRPC。

spring:application:name: DUBBO-PROTOCOL-PROVIDERdubbo:protocol:name: restport: 9001server: tomcatcontextpath: sunsregistry:address: zookeeper://127.0.0.1:2181
server:port: 8081

这里的重点是在协议name上,使用的是rest协议也就是Http协议。我们知道Http协议是应用层协议。应用层协议需要指定服务器,所以里边才配置了server是tomcat,port指的是服务器的端口。这样后续在Rpc的时候地址就是应该是:9001端口了。contextpath指的是suns设置的是应用名。这样最终的地址就变成了:Http://localhost:9001/suns/orders/1

server.port是指我们导入依赖的时候引入了Tomcat,他默认启动的时候也会启动Tomcat,我们为他指定端口为8081避免和我们的Rest端口发生冲突。

基于Rest协议进行RPC通信的端口是9001,@DubboService注解的作用是发布为一个DubboRpc服务,此时的作用就异常重要了,有了这个注解,这个Service配合上之前接口里边定义的各种注解才会被发布成一个Rest服务。

通过我们浏览器访问进行测试:Http://localhost:9001/suns/orders/1确实可以调用成功,没有任何的Controller。

3:Consumer模块

spring:application:name: DUBBO-DUBBO-003-CONSUMER
dubbo:registry:address: zookeeper://127.0.0.1:2181application:qos-enable: false
@DubboReference(protocol = "rest")
private UserService userService;

DubboReference这里必须要指定具体的协议。Dubbo协议因为是默认的所以不需要。
 

    @DubboReference(protocol = "rest")private OrderService orderService;@Testvoid test2() {Order order = orderService.getOrder(1L);System.out.println("order = " + order);}

到这里,Dubbo在整个基于Rest协议的开发我们就分析完了。

http://www.hengruixuexiao.com/news/24352.html

相关文章:

  • 网站推广--html关键词代码解说优化网站排名费用
  • 无棣住房建设局网站百度输入法
  • 手机怎样做网站图解html简单网页设计作品
  • 网站建设管理总结县政府网络推广外包一年多少钱
  • 太原做网站的公司排行如何制作一个宣传网页
  • 同心县建设局网站seo一般包括哪些内容
  • 网站开发需要学习市场调研的四个步骤
  • 现代简约风格装修效果图aso优化什么意思
  • 基于互联网怎样做网站推广汕头seo优化公司
  • 企业网站软件下载免费引流在线推广
  • wordpress顶部颜色seo关键词工具
  • 网页制作动态模板天津seo优化公司
  • 哪个网站做螺丝生意好杭州优化外包哪里好
  • 网站swf怎么做浙江seo推广
  • 网站首页设计怎么做网站seo推广招聘
  • iis做动态网站吗域名查询ip爱站网
  • 中文单页面网站模板网络营销模式案例
  • 程序员做任务的网站百度的链接
  • 网站建设毕业设计刻光盘友情链接购买平台
  • 怎样做一家迷你的特卖网站百度推广登陆平台登录
  • 电子商务网站的建设与流程郑州网站策划
  • 设计师网站设计seo包括哪些方面
  • 南山网站制作赛事资讯赛马资料
  • 深圳公司官网深圳百度推广排名优化
  • 做图片素材的网站中和seo公司
  • 360 网站备案引流人脉推广软件
  • php网站如何做多语言天津seo技术教程
  • 自适应网站 seo怎么做上海疫情最新消息
  • 宁波城乡建设委员会的网站网站模板源码
  • 个人网站模板怎么做百度关键词搜索量查询