springboot RestTemplate 精简整合下 很精简!!

springboot RestTemplate  我个人认为也算是我们说java接口吧,之前没接触过java这类的接口.现在有时间好好的研究下.

demo端主要是发送数据的,case端是接收数据端的并返回接收数据一端.

demo层的配置:

增加一个Users.java 实体类

@Data    //get set 方法
@AllArgsConstructor  //全参数构造器
@NoArgsConstructor   //无参数构造器
public class Users {
    private Integer id;
    private String username;
    
}

在springboot中 将http这些封装成了 RestTemplate 模板:

RestConfig.java

@Configuration
public class RestConfig {

    @Bean
    public RestTemplate restTemplate(){

        return  new  RestTemplate();
    }
}

case层配置:

RestConfig.java
@Configuration
public class RestConfig {

    @Bean
    public RestTemplate restTemplate(){

        return  new  RestTemplate();
    }
}

由于本地运行 端口存在冲突,所以修改 application.properties参数 避免冲突

server.port=8081
server.servlet.context-path=/case

这些完成后,

demo端 get方法整理 (我在这里不一一分析了,这样整体粘贴过来,信息更全面)


@RestController
public class UserControllerGet {


    @Autowired
    private RestTemplate restTemplate;

    // 访问地址 http://localhost:8080/getForObject
    @GetMapping("/getForObject")
    public Object getForObject() {

        //设置好URL
        String url = "http://localhost:8081/case/baseParam?id={1}&username={2}";
        Users users = restTemplate.getForObject(url, Users.class, 100, "徐大虾");
        return users;

    }

    @GetMapping("/getForEntity")
    public Map<String, Object> getForEntity() {


        String url = "http://localhost:8081/case/baseParam1?id={id}&username={username}";

        HashMap<String, Object> map = new HashMap<>();

        map.put("id", 222);
        map.put("username", "dashazi");

        ResponseEntity<HashMap> entity = restTemplate.getForEntity(url, HashMap.class, map);  //必须使用ResponseEntity包装
        HttpStatus statusCode = entity.getStatusCode();
        System.out.println(statusCode); //状态码
        System.out.println(entity.getStatusCodeValue()); //状态码值
        System.out.println(entity.getBody()); //内容
        System.out.println(entity.getHeaders());//请求头

        return entity.getBody();
    }


    @GetMapping("/getForEntity1")
    public Map<String, Object> getForEntity1() {


        String url = "http://localhost:8081/case/baseParam2?id={id}&username={username}";

        HashMap<String, Object> map = new HashMap<>();

        map.put("id", 222);
        map.put("username", "dashazi");

        ResponseEntity<HashMap> entity = restTemplate.getForEntity(url, HashMap.class, map);  //必须使用ResponseEntity包装
        HttpStatus statusCode = entity.getStatusCode();
        System.out.println(statusCode); //状态码
        System.out.println(entity.getStatusCodeValue()); //状态码值
        System.out.println(entity.getBody()); //内容
        System.out.println(entity.getHeaders());//请求头

        return entity.getBody();
    }


}

与之对应的case端代码:

@RestController
public class ServerController {


   //基本类型
   @RequestMapping("/baseParam")
   public Users baseParam (Integer id , String username) {
       Users users = new Users();
       users.setId(id);
       users.setUsername(username);
       System.out.println("baseParam 服务器 被访问 ");
       return users;
   }

  //实体类访问参数
    @RequestMapping("/baseParam1")
    public Users baseParam1 (Users users) {
        System.out.println("baseParam1 服务器 被访问 ");


        return users;
    }

    @RequestMapping("/baseParam2")
    public JSONObject baseParam2 (Users users) {

        JSONObject jsonObject = new JSONObject();
        jsonObject.put("status", "ok");
        jsonObject.put("code", 200);
        System.out.println("baseParam1 服务器 被访问 ");
        System.out.println(users);
        return jsonObject;

    }

demo端 post 方法

@RestController
public class UserControllerPost {

    @Autowired
    private RestTemplate restTemplate;


    /**
     * 基本类型和实体类型传参
     */
    @GetMapping("/postForObject1")
    public Users postForObject1() {

        //远程访问URL
        String URL = "http://localhost:8081/case/defineParam";

        Users users = new Users();
        users.setId(1000);
        users.setUsername("xu da xia 2 hao ");
        ResponseEntity<Users> postForEntity = restTemplate.postForEntity(URL, users, Users.class);
        return  postForEntity.getBody();
    }

    @GetMapping("/postForObject2")
    public Users postForObject2() {
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        //远程访问URL
        String URL = "http://localhost:8081/case/defineParam";

        Users users = new Users();
        users.setId(1000);
        users.setUsername("xu da xia 2 hao ");

        HttpEntity<Users> entity = new HttpEntity<>(users, headers);
        ResponseEntity<Users> postForEntity = restTemplate.postForEntity(URL, entity, Users.class);
        return  postForEntity.getBody();
    }

}

case端代码

@RestController
public class ServerController {
    @RequestMapping("/defineParam")

    public Users  defineParam (@RequestBody Users users){

        System.out.println(users); //接收参数并打印.
        Users users1 = new Users();
        users1.setId(10000);
        users1.setUsername("tian xia di er"); //返回自己定义的参数
        return users1;
    }

}

demo 端exchange方法:

@RestController
public class UserControllerExchange {


    @Autowired
    private RestTemplate restTemplate;

   @GetMapping("/UserExchange")
    public Users UserExchange(){

       String url = "http://localhost:8081/case/ListParam";
       MultiValueMap<String, Object > map = new LinkedMultiValueMap<>();
       map.add("id",100);
       map.add("username","xiaoxiao");
       HttpEntity<MultiValueMap> entity = new HttpEntity<>(map);
       ResponseEntity<Users> exchange = restTemplate.exchange(url, HttpMethod.POST, entity, Users.class);
       return  exchange.getBody();


   }

}

case端代码:

@RestController
public class ServerController {

    //返回自己定义的参数

    @RequestMapping("/ListParam")

    public JSONObject  ListParam ( Users users){
        System.out.println(users);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("status", "ok");
        jsonObject.put("code", 200);
        return jsonObject;
    }
}

就到这里了,大家按照方法名一一对照就可以找到关系了.

代码位置:https://gitee.com/SpringBootT/http-case/tree/master

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值