`
y806839048
  • 浏览: 1106844 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

SpringMVC RestTemplate的几种请求调用

阅读更多

SpringMVC RestTemplate的几种请求调用

 

1.用统一的方法模板进行四种请求:POST,PUT,DELETE,GET

restTemplate.exchange(

        String url, 

        HttpMethod method,

        HttpEntity requestEntity, 

        Class responseType, 

        Object uriVariables[]

    )

 

说明:

1)url: 请求地址;

2)method: 请求类型(如:POST,PUT,DELETE,GET);

3)requestEntity: 请求实体,封装请求头,请求内容

4)responseType: 响应类型,根据服务接口的返回类型决定

5)uriVariables: url中参数变量值

 

例如:

 

(1)POST请求

 

String reqJsonStr = "{\"code\":\"testCode\", \"group\":\"testGroup\",\"content\":\"testContent\", \"order\":1}";

HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON);

HttpEntity<String> entity = new HttpEntity<String>(reqJsonStr,headers);

ResponseEntity<Map> resp = restTemplate.exchange(DIC_DATA_URL, HttpMethod.POST, entity, Map.class);

 

(2)PUT请求

 

String reqJsonStr = "{\"id\":227,\"code\":\"updateCC\", \"group\":\"UPDATE\",\"content\":\"updateCT\", \"order\":9}";

HttpHeaders headers = new HttpHeaders();

headers.setContentType(MediaType.APPLICATION_JSON);

HttpEntity<String> entity = new HttpEntity<String>(reqJsonStr,headers);

ResponseEntity<Map> resp = restTemplate.exchange(DIC_DATA_URL, HttpMethod.PUT, entity, Map.class);

 

(3)DELETE请求

 

ResponseEntity<Map> resp = restTemplate.exchange(DIC_DATA_URL + "?id={id}", HttpMethod.DELETE, null, Map.class, 227);

 

(4)GET请求

 

ResponseEntity<String> results = restTemplate.exchange(url,HttpMethod.GET, null, String.class, params);

 

2.用各种请求对应的专一接口

(1)POST请求

 

postForObject(String url, Object request, Class responseType, Object uriVariables[]):

 

    返回数据对象Object,例如:

        DicData data = new DicData();

        data.setCode("cd123"); data.setGroup("TEST"); data.setContent("测试数据"); data.setOrder(5);    

        DicData obj = restTemplate.postForObject(DIC_DATA_URL, data, DicData.class);

 

 

> 或者

 

 

 

postForEntity:(String url, Object request, Class responseType, Object uriVariables[])

 

返回封装了数据对象的ResponseEntity对象,例如:

    DicData data = new DicData();

    data.setCode("cd123"); data.setGroup("TEST"); data.setContent("测试数据"); data.setOrder(5);        

    ResponseEntity<Map> respEntity = restTemplate.postForEntity(DIC_DATA_URL, data, Map.class);

 

 

> (2)PUT请求

 

    put(String url, Object request, Object urlVariables[])

 

例如:

    DicData data = new DicData();

    data.setId(226L); data.setCode("updateCode"); data.setGroup("UPDATE"); 

    data.setContent("测试数据"); data.setOrder(9);      

    restTemplate.put(DIC_DATA_URL, data); 

 

 

> (3)DELETE请求

 

    delete(String url, Object urlVariables[])

 

例如:

    restTemplate.delete(DIC_DATA_URL + "?id={id}", 222);

 

 

> (4)GET请求

 

    getForObject(String url, Class responseType, Object urlVariables[]):

 

返回请求的结果对象,例如

    Order o = restTemplate.getForObject(Constants.SERVER_URL+"/order?orderCode={orderCode}",

                        Order.class,order.getOrderCode());

getForEntity(String url, Class responseType, Object urlVariables[]):

返回封装了数据对象的ResponseEntity对象,例如:

ResponseEntity<EBTUser> ebtuserResponse = restTemplate.getForEntity(url,EBTUser.class);

EBTUser user = ebtuserResponse.getBody();

 

3.GET请求,要返回一些复合数据类型时的处理

 

> (1)返回List类型数据

 

    DicData[] dicResult = restTemplate.getForObject( Constants.SERVER_URL + "/dicDatas/dicData?"

                + "group={group}", DicData[].class, group);

    List<DicData> list = Arrays.asList(dicResult);

 

或者

 //ParameterizedTypeReference解决单层不嵌套以及嵌套的list

// pass generic information to resttemplate; ParameterizedTypeReference为spring3.2版本后引进的类

    ParameterizedTypeReference<List<DicData>> responseType = new ParameterizedTypeReference<List<DicData>>();

    ResponseEntity<List<DicData>> resp = restTemplate.exchange(Constants.SERVER_URL + "/dicDatas/dicData?group={group}", 

            HttpMethod.GET, null, responseType);

    List<DicData> list = resp.getBody();

 

 

> (2)返回属性中有范型数据的复合对象

 //ObjectMapper 解析嵌套的list变成的json字符串,TypeReference

    比如,分页对象

    ResponseEntity<String> results = restTemplate.exchange(url,HttpMethod.GET, null, String.class, params);

    // 借助com.fasterxml.jackson.databind.ObjectMapper 对象来解析嵌套的json字符串    

    ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

    PageInfo<Product> page = mapper.readValue(results.getBody(), new TypeReference<PageInfo<Product>>() { });

分享到:
评论

相关推荐

    springmvc接收ajax请求注意事项

    SpringMVC 接收 Ajax 请求注意事项 SpringMVC 框架在处理 Ajax 请求时需要注意一些重要的配置和设置,以确保请求的正确处理和数据的正确传输。下面我们将介绍在 SpringMVC 中接收 Ajax 请求的注意事项。 基本数据...

    springMVC使用Ajax请求数据

    在SpringMVC中,Ajax请求通常涉及到以下几个关键步骤: 1. **前端准备**: - 首先,你需要在HTML页面中引入jQuery库,因为它是广泛使用的JavaScript库,提供了方便的Ajax函数。 - 在HTML元素上添加事件监听器,...

    java springmvc

    3. **Controller**: 控制器处理HTTP请求并调用业务逻辑。通过`@RequestMapping`注解,我们可以指定控制器处理特定的URL请求。此外,`@RequestParam`、`@PathVariable`等注解帮助我们获取请求参数。 4. **View**: ...

    springmvc调用业务逻辑

    springmvc调用业务逻辑

    springMVC中RestTemplate传值接值方法

    SpringMVC中RestTemplate传值接值方法是指在SpringMVC框架中使用RestTemplate来进行数据传输和接收的一种方法。这种方法可以帮助开发者快速简便地实现数据交换和处理。 RestTemplate的配置 在使用RestTemplate之前...

    springmvc实现httpclient调用服务

    综上所述,Spring MVC结合HttpClient提供了一种有效的方式,使我们在Java Web应用中能够轻松地调用外部服务。通过合理的配置和编程,我们可以构建稳定、高效的远程服务调用系统。在实际开发中,还应根据具体需求进行...

    springMVC_day01.xmind

    SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 中。 SpringMVC 已经成为目前最主流的MVC框架之一,并且随着Spring...

    SpringMVC-3 映射请求参数和请求头

    使用@RequestParam、@RequestHeader和@CookieValue注解分别映射请求参数、请求头和Cookie值信息到相应处理方法的入...另外,SpringMVC也支持使用POJO对象绑定请求参数,且也可以使用Servlet原生API作为目标方法的形参。

    SpringMVC四种映射方式实例代码

    本实例代码着重讲解了SpringMVC中的四种映射方式以及拦截器的实现,这对于理解和掌握SpringMVC的请求处理机制至关重要。 1. **四种映射方式**: - **通配符映射**:`@RequestMapping("/path/*")`,星号(*)代表任意...

    SpringMVC 入门小程序

    - **控制器(Controller)**:接收用户请求,处理业务逻辑,调用模型,并将结果转发给视图。 ### 3. SpringMVC工作流程 1. 用户发送HTTP请求到达DispatcherServlet。 2. DispatcherServlet根据请求信息,通过...

    java中的springMVC模式调用过程

    java中的springMVC模式调用过程,该图片显示了如果在java中使用springMVC的模式调用数据库过程。

    springmvc+httpInvoke远程调用例子(1)

    springmvc 例子。采用了httpInvoke远程调用技术,为了简单只用了jsp-&gt;controller-&gt;dao分层。。其中的jsp controller 放在_web工程中,业务逻辑放在_svc中,分开下载,如果觉得没有,就可以不用下载另外一个工程了,...

    手写SpringMVC注解动态调用控制器方法.zip

    刚接触SpringMVC几天、代码肯定比不上大佬ε≡٩(๑&gt;₃&lt;)۶ ,手下留情,谢谢 尝试手写SpringMVC动态调用方法 初步使用反射注解实现动态调用方法 初步了解SpringMVC @Controller、@RequestMapping、@requestParam...

    SpringMVC PPT_springmvc_

    在 Controller 处理完请求后,会返回一个 ModelAndView 对象,供 DispatcherServlet 调用。 六、ViewResolver ViewResolver 是视图解析器,它的职责是根据 ModelAndView 中的视图名,找到具体的视图进行渲染。...

    maven入门整合SpringMVC登录+调用天气接口实例

    接口调用通常涉及网络请求,可以使用HttpURLConnection、Apache HttpClient或者Spring的RestTemplate等工具。在Java中,这些工具可以发送GET或POST请求,接收JSON或其他格式的数据,并将其转换为Java对象。在这个...

    maven+SpringMVC+Spring+Mybatis图片上传本地以及显示+调用存储过程

    本项目采用的是经典的Java EE技术栈:Maven、SpringMVC、Spring和Mybatis,来实现这一功能,同时包含了调用数据库存储过程的操作。以下是关于这个项目的关键知识点的详细说明: 1. Maven:Maven是一个项目管理工具...

    Http请求传参SpringMVC接收参数详细解析

    本文将深入解析SpringMVC如何处理GET和POST请求中的参数,以及如何使用@RequestParam和@RequestBody注解。 1. GET请求 GET请求通常用于获取资源,其参数直接附加在URL路径后面,以键值对的形式存在。例如,`/api/...

    springmvc+spring线程池处理http并发请求数据同步控制问题

    同时,Spring框架提供的线程池功能则可以帮助我们优化多线程环境下的性能,特别是处理并发请求时。在这个主题中,我们将深入探讨如何利用Spring MVC与Spring线程池来有效地管理并发请求,并解决数据同步控制问题。 ...

Global site tag (gtag.js) - Google Analytics