服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - 使用restTemplate远程调用controller路径取数据

使用restTemplate远程调用controller路径取数据

2021-11-25 13:18renhuan28 Java教程

这篇文章主要介绍了使用restTemplate远程调用controller路径取数据,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

 

restTemplate远程调controller路径取数据

Spring的RestTemplate提供了很多对HTTP method的支持,这里主要说常用的get和post。

使用环境为springboot

 

首先要写相关配置类,举例:

@Configuration
public class Config {
  @Autowired
  RestTemplateBuilder builder;
  @Bean
  public RestTemplate restTemplate() {
    return builder.build();
  }
}

 

然后调目标cotroller层,比如目标cotroller层为

@RestController
@RequestMapping("/aaa")
public class TemplateController {
  @PostMapping(value = "/ppp")
  public List<Students> getInfo(@RequestBody String sid) {
    ...
    return stuService.getId(areaId);
  }
}

 

需要用post的方法去调

  @Autowired
  private RestTemplate restTemplate;
  public List<Student> getMsg() {
    String id = "111";
    HttpEntity<String> entity = buildEntity(id);
    String url = "http://ip:port/aaa/ppp";
    return restTemplate.postForObject(url, entity, List.class);
  }
  private HttpEntity<String> buildEntity(String id) {
    JSONObject jo = new JSONObject();
    jo.put("sid", id);
    String requestJson = jo.toJSONString();
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
    return new HttpEntity<String>(requestJson, headers);
  }

 

再比如目标controller层为

@RestController
@RequestMapping(value = "/aaa")
public class StudentController {
    @GetMapping(value = "/ggg")
  public Set<Students> queryStudent(@RequestParam(value = "code") String code,
      @RequestParam(value = "objectKey") String objectKey,
      @RequestParam(value = "studentId") Integer studentId) {
    return sService.get(code, objectKey, kindId);
  }
}

 

需要用get的方法去调

 @Autowired
  private RestTemplate restTemplate;
  public Set queryStudent(String ip, int port,EventRelationTask eventRelationTask) {
    Integer studentId = eventRelationTask.getStudentId();
    String code = eventRelationTask.getCode();
    String objectKey = eventRelationTask.getObjectKey();
    String url =
        "http://" + ip + ":" + port + Student.PROJECTNAME + "event/queryparentnode?code=" + code + "&objectKey=" + objectKey + "&studentId=" + studentId;
    Set<Student> students = new HashSet<>();
    students = restTemplate.getForObject(url, Set.class);   //主要这个方法
    if (students != null) {
      return students;
    }
    return new HashSet();
  }

 

通过Spring的RestTemplate进行跨模块调用

Spring提供了一个RestTemplate模板工具类,对基于Http的客户端进行了封装,并且实现对象与json的序列化和反序列化。首先在项目中新建controller方法

 

相关代码如图下所示:

使用restTemplate远程调用controller路径取数据

接着我们在另外一个项目中的启动类的位置注册一个RestTemplate实例

 

相关代码可参考图下所示:

使用restTemplate远程调用controller路径取数据

然后创建HttpTestController使用RestTemplate中最简单的一个功能getForEntity发起了一个get请求去调用前一个项目中服务端的数据并返回结果。

使用restTemplate远程调用controller路径取数据

最后访问http://localhost:8080/httpTestController/queryByname?name=张三就能看到list打印传递的值。需要注意的是图1是第一个项目请求的,图2是第二个项目通过跨服务跨项目请求得来的,它们两者的端口号是不一样的

 

运行结果如下所示:

使用restTemplate远程调用controller路径取数据

(图1)

使用restTemplate远程调用controller路径取数据

(图2)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/renhuan28/article/details/80512851

延伸 · 阅读

精彩推荐
  • Java教程基于Java 谈回调函数

    基于Java 谈回调函数

    回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所 指向的函数时,我们就...

    hackeris6552020-10-23
  • Java教程SpringBoot中的内容协商器图解

    SpringBoot中的内容协商器图解

    本文通过图文解说加代码的形式给大家介绍了SpringBoot中的内容协商器知识,需要的朋友参考下吧...

    波波维奇4892021-02-23
  • Java教程mybatis中insert主键ID获取和多参数传递的示例代码

    mybatis中insert主键ID获取和多参数传递的示例代码

    这篇文章主要介绍了mybatis中insert主键ID获取和多参数传递的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...

    Dark_King_8712021-08-27
  • Java教程java必学必会之equals方法

    java必学必会之equals方法

    java必学必会之equals方法,equals方法是 java.lang.Object 类的方法,想要了解更多关于equals方法的朋友,可以参考下文 ...

    孤傲苍狼4512020-03-07
  • Java教程Java Scanner 类的使用小结

    Java Scanner 类的使用小结

    在笔试编程过程中,关于数据的读取如果迷迷糊糊,那后来的编程即使想法很对,实现很好,也是徒劳,于是在这里认真总结了Java Scanner 类的使用,需要的...

    种子选手席同学10572021-06-04
  • Java教程Java下变量大小写驼峰、大小写下划线、大小写连线转换

    Java下变量大小写驼峰、大小写下划线、大小写连线转换

    有时候需要处理对象属性的getter、setter方法,或者将属性与数据表字段进行相互转换,感兴趣的可以了解一下...

    chanllenge6812021-09-23
  • Java教程Java线程安全与非线程安全解析

    Java线程安全与非线程安全解析

    这篇文章主要介绍了Java线程安全与非线程安全解析,涉及非线程安全现象模拟以及线程安全的实现等相关内容,需要的朋友可以参考,一起交流学习。...

    CoolRandy5702021-01-17
  • Java教程详解Jackson的基本用法

    详解Jackson的基本用法

    Java生态圈中有很多处理JSON和XML格式化的类库,Jackson是其中比较著名的一个。虽然JDK自带了XML处理类库,但是相对来说比较低级,使用本文介绍的Jackson等高...

    纵码万水千山10852021-09-15