- 💂 个人主页: 程序员爱摸鱼
- 🤟 版权: 本文由【程序员爱摸鱼】原创、在CSDN首发、需要转载请联系博主
- 💬 如果文章对你有帮助、欢迎关注+点赞+收藏(一键三连)哦
- 💅 想寻找共同成长的小伙伴,可以互粉哦

客户端程序通过接口调用服务端程序,并获得该服务返回的数据的过程,称为远程调用。
“商品管理系统”调用“用户管理系统”的过程,就是“远程调用”。此时“商品管理系统”相当于模拟“浏览器”。

常见的远程调用方式有2种:
RPC:Remote Produce Call远程过程调用,==自定义数据==格式的远程调用方式。基于原生TCP通信,速度快,效率高。
Http:采用http协议远程调用方式,==规定==了数据传输的格式,缺点是消息封装臃肿。现在热门的Rest风格,就可以通过http协议来实现。
常见框架 :
RPC常见框架: dubbo、WebService
Http常见框架:HttpClient、RestTemplat
| 区别 | HTTP | RPC |
| 速度 | 较慢 | 快 |
| 难度 | 简单 | 复杂 |
| 灵活性 | 灵活,跨平台,跨语言 |
- <parent>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-build</artifactId>
- <version>2.3.5.RELEASE</version>
- </parent>
-
- <properties>
- <spring.cloud.version>Hoxton.SR12</spring.cloud.version>
- <spring.cloud.alibaba.version>2.2.7-SNAPSHOT</spring.cloud.alibaba.version>
- <mybatis.plus.starter.version>3.4.0</mybatis.plus.starter.version>
- <durid.starter.version>1.1.10</durid.starter.version>
- <swagger.version>2.7.0</swagger.version>
- <jwt.jjwt.version>0.9.0</jwt.jjwt.version>
- <jwt.joda.version>2.9.7</jwt.joda.version>
- </properties>
-
-
-
- <dependencyManagement>
- <dependencies>
- <!-- Spring Dependencies -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-dependencies</artifactId>
- <version>${spring-boot.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
-
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-dependencies</artifactId>
- <version>${spring.cloud.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
-
- <dependency>
- <groupId>com.alibaba.cloud</groupId>
- <artifactId>spring-cloud-alibaba-dependencies</artifactId>
- <version>2.2.7.RELEASE</version>
- <type>pom</type>
- </dependency>
-
- <!-- mybatis-plus -->
- <dependency>
- <groupId>com.baomidou</groupId>
- <artifactId>mybatis-plus-boot-starter</artifactId>
- <version>${mybatis.plus.starter.version}</version>
- </dependency>
-
- <!-- Druid连接池 -->
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>druid-spring-boot-starter</artifactId>
- <version>${durid.starter.version}</version>
- </dependency>
-
- <!--swagger2-->
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-swagger2</artifactId>
- <version>${swagger.version}</version>
- </dependency>
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-swagger-ui</artifactId>
- <version>${swagger.version}</version>
- </dependency>
- </dependencies>
- </dependencyManagement>
-
- <dependencies>
- <!--web起步依赖-->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
-
- <!--swagger2-->
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-swagger2</artifactId>
- </dependency>
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-swagger-ui</artifactId>
- </dependency>
-
- <!--支持lombok-->
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- </dependency>
-
- <dependency>
- <groupId>com.baomidou</groupId>
- <artifactId>mybatis-plus-boot-starter</artifactId>
- <version>3.4.0</version>
- </dependency>
- <!--MySQL数据库驱动-->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- </dependency>
- <!--测试-->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- </dependency>
- <dependency>
- <groupId>com.czxy.</groupId>
- <artifactId>test-mybatis-plus</artifactId>
- <version>1.0-SNAPSHOT</version>
- <scope>test</scope>
- </dependency>
-
- </dependencies>
- server:
- port: 8081
- spring:
- datasource:
- driver-class-name: com.mysql.cj.jdbc.Driver
- url: jdbc:mysql://localhost:3306/20220622exam?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
- username: root
- password: 1234
- mybatis-plus:
- configuration:
- log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #输出日志
- map-underscore-to-camel-case: true
- global-config:
- db-config:
- table-prefix: t_
- package com.czxy.domain;
-
- import com.baomidou.mybatisplus.annotation.TableId;
- import com.baomidou.mybatisplus.annotation.TableName;
- import lombok.AllArgsConstructor;
- import lombok.Data;
- import lombok.NoArgsConstructor;
-
- @Data
- @NoArgsConstructor
- @AllArgsConstructor
- @TableName("companys")
- public class Companys {
- @TableId
- private String keyno;
-
- private String cname;
-
- private String oper;
-
- private String industry;
- }
- @RestController
- @RequestMapping("/companys")
- public class CompanysContoller {
- @Resource
- private CompanysMapper companysMapper;
-
- @GetMapping
- public BaseResult selectAll(){
- List<Companys> list = companysMapper.selectList(null);
- if(list ==null){
- return BaseResult.error("查询失败");
- }
- return BaseResult.ok("查询成功",list);
- }
-
- @GetMapping("/{keyno}")
- public BaseResult selectById(@PathVariable("keyno") String keyno){
- Companys companys = companysMapper.selectById(keyno);
- if(companys ==null){
- return BaseResult.error("查询失败");
- }
- return BaseResult.ok("查询成功",companys);
- }
- @PostMapping
- public BaseResult save(@RequestBody Companys companys){
- int insert = companysMapper.insert(companys);
- if(insert !=1){
- return BaseResult.error("添加失败");
- }
- return BaseResult.ok("添加成功");
- }
- @DeleteMapping("/{keyno}")
- public BaseResult deleteById(@PathVariable("keyno") String keyno){
- int i = companysMapper.deleteById(keyno);
- if(i !=1){
- return BaseResult.error("删除失败");
- }
- return BaseResult.ok("删除成功");
- }
-
- @PutMapping
- public BaseResult updata(@RequestBody Companys companys){
- int i = companysMapper.updateById(companys);
- if(i !=1){
- return BaseResult.error("修改失败");
- }
- return BaseResult.ok("修改成功");
- }
-
-
- }
- @Mapper
- public interface CompanysMapper extends BaseMapper<Companys> {
- }
- @SpringBootApplication
- public class TestCompanyApplication {
-
- public static void main(String[] args) {
- SpringApplication.run(TestCompanyApplication.class,args);
- }
- }
- @SpringBootApplication
- public class TesthttpApplication {
- public static void main(String[] args) {
- SpringApplication.run(TesthttpApplication.class,args);
- }
- }
- @Data
- @NoArgsConstructor
- @AllArgsConstructor
- public class Companys {
- private String keyno;
-
- private String cname;
-
- private String oper;
-
- private String industry;
- }
- @RestController
- @RequestMapping("/companys")
- public class CompanysContoller {
- @Resource
- private CompanysService companysService;
-
- @GetMapping
- public BaseResult selectAll() {
- List<Companys> list=companysService.list();
- return BaseResult.ok("查询成功",list);
- }
-
-
- @GetMapping("/{keyno}")
- public BaseResult selectById(@PathVariable("keyno") String keyno){
- BaseResult<Companys> user = companysService.getById(keyno);
- return BaseResult.ok("查询成功",user);
- }
- @PostMapping
- public BaseResult save(@RequestBody Companys companys){
- try {
- companysService.insert(companys);
- return BaseResult.ok("添加成功");
- } catch (Exception e) {
- return BaseResult.error(e.getMessage());
- }
- }
- @DeleteMapping("/{keyno}")
- public BaseResult deleteById(@PathVariable("keyno") String keyno){
- Boolean i = companysService.deleteById(keyno);
- if(i){
- return BaseResult.ok("删除成功");
- }
- return BaseResult.error("删除失败");
- }
-
- @PutMapping
- public BaseResult updata(@RequestBody Companys companys){
- try {
- companysService.updateById(companys);
- return BaseResult.ok("修改成功");
- } catch (Exception e) {
- return BaseResult.error(e.getMessage());
- }
- }
-
-
- }
- package com.czxy.service.impl;
-
- import com.czxy.admin.AdminTest;
- import com.czxy.domain.Companys;
- import com.czxy.service.CompanysService;
- import com.czxy.vo.BaseResult;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
-
- import javax.annotation.Resource;
- import java.util.List;
-
- @Service
- @Transactional
- public class CompanysServiceimpl implements CompanysService {
-
- @Resource
- private AdminTest adminTest;
- @Override
- public List<Companys> list() {
- List<Companys> list= adminTest.list();
- return list;
- }
-
- @Override
- public BaseResult<Companys> getById(String keyno) {
- BaseResult<Companys> userBaseResult = adminTest.selectById(keyno);
- return userBaseResult;
- }
-
- @Override
- public void insert(Companys companys) {
- adminTest.insert(companys);
-
- }
-
- @Override
- public Boolean deleteById(String keyno) {
- Boolean result=adminTest.delete(keyno);
- return result;
- }
-
- @Override
- public void updateById(Companys companys) {
- adminTest.update(companys);
- }
- }
- package com.czxy.admin;
-
- import com.czxy.domain.Companys;
- import com.czxy.vo.BaseResult;
- import org.checkerframework.checker.units.qual.C;
- import org.springframework.core.ParameterizedTypeReference;
- import org.springframework.http.HttpMethod;
- import org.springframework.http.ResponseEntity;
- import org.springframework.stereotype.Component;
- import org.springframework.web.client.RestTemplate;
-
- import javax.annotation.Resource;
- import java.util.List;
-
- @Component
- public class AdminTest {
-
- @Resource
- private RestTemplate restTemplate;
-
-
- public List<Companys> list() {
- String url="http://localhost:8081/companys";
- ResponseEntity<BaseResult> entity = restTemplate.getForEntity(url, BaseResult.class);
- List<Companys> list = (List<Companys>) entity.getBody().getData();
- return list;
- }
-
-
- public BaseResult<Companys> selectById(String keyno) {
- String url="http://localhost:8081/companys/"+keyno;
- ResponseEntity<BaseResult<Companys>> resultResponseEntity = restTemplate.exchange(url, HttpMethod.GET, null, new ParameterizedTypeReference<BaseResult<Companys>>() {
- });
- return resultResponseEntity.getBody();
- }
-
- public void insert(Companys companys) {
- String url="http://localhost:8081/companys";
- RestTemplate restTemplate = new RestTemplate();
- ResponseEntity<BaseResult> entity = restTemplate.postForEntity(url, companys, BaseResult.class);
-
- }
-
- public Boolean delete(String keyno) {
- String url="http://localhost:8081/companys/"+keyno;
- RestTemplate restTemplate = new RestTemplate();
- restTemplate.delete(url);
- return true;
- }
-
- public void update(Companys companys) {
- String url="http://localhost:8081/companys";
- RestTemplate restTemplate = new RestTemplate();
- restTemplate.put(url,companys,BaseResult.class);
- }
- }
最后进行测试
http://localhost:8082/swagger-ui.html#/

最后只要能调用到就说明你已经学会了哦~
想要了解更多吗?没时间解释了,快来点一点!!!
程序员爱摸鱼🐟
————————————————
版权声明:本文为CSDN博主「程序员爱摸鱼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lcshen1234?type=blog