开发带参数的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()
方法解决.