zoukankan      html  css  js  c++  java
  • SpringBoot调用 Web API 接口

    API接口1:添加一条记录

        @PostMapping(path="/addUser")  //用请求参数
        @ResponseBody
        //必须加@RequestBody才能接收到postForObject发来的数据
        public int addUser(@RequestBody User user) {
            try {
                userCrudReposity.save(user);
                return 0;
            }
            catch(Exception e){
                return -1;
            }
        }

    调用代码

         RestTemplate restTemplate = new RestTemplate();
            User user=new User("王","宏伟","email");
            int ret = restTemplate.postForObject("http://localhost:8888/demo/addUser",user,int.class); //int.class是http://localhost:8888/demo/addUser返回的类型
            return ret;

    API接口2:添加多条记录

        @PostMapping(path="/addUsers")  //用请求参数
        @ResponseBody
        //必须加@RequestBody才能接收到postForObject发来的数据
        public int addUsers(@RequestBody List<User> list) {
            try {
                userCrudReposity.saveAll(list);
                return 0;
            }
            catch(Exception e){
                return -1;
            }
        }

    调用代码:

    
    
    List<User> list=new ArrayList<User>();
    RestTemplate restTemplate = new RestTemplate();
    User user1=new User("王","宏伟1","email");
    User user2=new User("王","宏伟2","email");
    list.add(user1);
    list.add(user2);
    int ret = restTemplate.postForObject("http://localhost:8888/demo/addUsers",list,int.class);

     API接口3:JSON字符串,添加多条记录

        @PostMapping(path="/addUsers_JSON")  //用请求参数
        @ResponseBody
        //必须加@RequestBody才能接收到postForObject发来的数据
        public int addUsers_JSON(@RequestBody String jsonStr) {
            try {
                jsonStr = URLDecoder.decode(jsonStr,"utf-8");
                List<User> users= JSONArray.parseArray(jsonStr,User.class);
                userCrudReposity.saveAll(users);
                return 0;
            }
            catch(Exception e){
                return -1;
            }
        }

    调用代码

            List<User> list=new ArrayList<User>();
            RestTemplate restTemplate = new RestTemplate();
            User user1=new User("王","宏伟a","email");
            User user2=new User("王","宏伟b","email");
            list.add(user1);
            list.add(user2);
            String jsonString=JSON.toJSONString(list);
            String str = URLEncoder.encode(jsonString, "utf-8"); //字符串中中文,必须编码,否则接收错误
            int ret = restTemplate.postForObject("http://localhost:8888/demo/addUsers_JSON",str,int.class);

    说明:语句 restTemplate.postForObject("http://localhost:8888/demo/addUsers_JSON",str,int.class);中的中文字符串必须编码,否则接收到后中文错误。

    另外一种调用方式

        @GetMapping("/addUsers_JSON2")
        public int addUsers_JSON2()  {
            List<User> list=new ArrayList<User>();
            RestTemplate restTemplate = new RestTemplate();
            User user1=new User("王","宏伟 addUsers_JSON1","email");
            User user2=new User("王","宏伟 addUsers_JSON1","email");
            list.add(user1);
            list.add(user2);
            String jsonString=JSON.toJSONString(list);
    
            HttpHeaders headers = new HttpHeaders();
            MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
            headers.setContentType(type);
            headers.add("Accept", MediaType.APPLICATION_JSON.toString());
            HttpEntity<String> formEntity = new HttpEntity<String>(jsonString, headers);
            int result = restTemplate.postForObject("http://localhost:8888/demo/addUsers_JSON1", formEntity, int.class);  // 这里没有编码,接口不需要解码
            return result;
        }

    原因见:https://www.cnblogs.com/zique/p/6171862.html , 用Postman发送接口能正确接收,应该是发送端格式问题

  • 相关阅读:
    RFC3489 STUN之客户端所处环境探测流程与部分属性含义说明
    视频直播中用户连麦技术模型与特点分析
    基于网络流量统计与反馈实现边缘机房间媒体流流量调度的一种思路
    基于Flash与window平台本地程序通信实现媒体流发布
    基于Flash ActionScript 实现RTMP发布与播放媒本流
    DirectShow音频采集声音不连续问题分析与解决办法经验总结
    一种高性能与高可用的流媒体系统之媒体流状态管理方法
    复用TCP连接提升流媒体服务器之间流量转发效率
    基于块流协议保证音频优先发送
    LibRTMP优化之调整输出块大小
  • 原文地址:https://www.cnblogs.com/wfy680/p/15009839.html
Copyright © 2011-2022 走看看