springboot使用RestTemplate


开发带参数的restful接口

@RequestParam

// URL路径格式: /trigger?taskId=xxxxxxxxxx
@GetMapping("/trigger")
public String trigger(@RequestParam(value = "taskId") String taskId) {
    tableCompareService.compare(taskId);
    return "ok";
}

@PathVariable

// URL路径格式: /trigger/taskxxxxxxxxxx
@GetMapping("/trigger/{taskId}")
public void demo(@PathVariable(name = "taskId") String taskId) {
    System.out.println("taskId=" + taskId);
}

@RequestBody

// 请求内容转化成对象
@PostMapping(path = "/demo")
public void demo1(@RequestBody Person person) {
    System.out.println(person.toString());
}

RestTemplateConfig.java类

@Configuration
public class RestTemplateConfig {

    @Bean
    public RestTemplate restTemplate(ClientHttpRequestFactory factory){
        return new RestTemplate(factory);
    }

    // 超时时间自定义
    @Bean
    public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
        factory.setConnectTimeout(15000);
        factory.setReadTimeout(5000);
        return factory;
    }
}

使用RestTemplate调用其它接口样例

@Service
public class demoService {

    @Autowired
    private RestTemplate restTemplate;

    public String get(Integer id){
        return restTemplate.getForObject("http://localhost:8080/user?userId=id",String.class);
    }
}
@GetMapping("getForEntity/{id}")
public User getById(@PathVariable(name = "id") String id) {
    ResponseEntity<User> response = restTemplate.getForEntity("http://localhost/get/{id}", User.class, id);
    User user = response.getBody();
    return user;
}
@RequestMapping("saveUser")
public String save(User user) {
    ResponseEntity<String> response = restTemplate.postForEntity("http://localhost/save", user, String.class);
    String body = response.getBody();
    return body;
}

针对delete put等一些方法没有返回值或者其它问题,可以使用restTemplate.exchange()方法解决.


文章作者: wuzhiyong
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 wuzhiyong !
评论
 上一篇
springboot动态定时任务 springboot动态定时任务
spring boot通过注解@EnableScheduling和@Scheduled实现的是静态定时任务,不能动态添加、停止、修改等.本文通过ThreadPoolTaskScheduler实现定时任务动态增删改. 静态定时任务参考
2020-05-08
下一篇 
springboot开发异步restful接口 springboot开发异步restful接口
SpringBoot中异步调用的使用 同步请求是会一直等待服务端相应的,需要返回结果给客户端的;而异步调用服务端会马上返回给客户端响应,完成这次整个的请求,至于异步调用的任务服务端后台自己慢慢跑就行,客户端不会关心。 开启异步调用,在启
2020-05-08
  目录