前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot Rest模板

Spring Boot Rest模板

作者头像
黑洞代码
发布2021-09-03 15:07:12
8880
发布2021-09-03 15:07:12
举报

Rest模板用于创建使用RESTful Web服务的应用程序。使用exchange()方法为所有HTTP方法使用Web服务。下面给出的代码显示了如何创建Rest模板Bean以自动连接Rest模板对象。

代码语言:javascript
复制
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
public class DemoApplication {
   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
   @Bean
   public RestTemplate getRestTemplate() {
      return new RestTemplate();
   }
}

GET

通过使用RestTemplate类的exchange()方法来使用GET API,假设此URL => http://localhost:8080/products返回以下JSON,将使用以下代码使用Rest Template来使用此API响应 -

代码语言:javascript
复制
[
   {
      "id": "1",
      "name": "Honey"
   },
   {
      "id": "2",
      "name": "Almond"
   }
]

必须遵循给定的点来使用API -

1.自动装配Rest模板对象。2.使用HttpHeaders设置请求标头。3.使用HttpEntity包装请求对象。4.为Exchange()方法提供URL,HttpMethod和Return类型。

代码语言:javascript
复制
@RestController
public class ConsumeWebService {
   @Autowired
   RestTemplate restTemplate;

   @RequestMapping(value = "/template/products")
   public String getProductList() {
      HttpHeaders headers = new HttpHeaders();
      headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
      HttpEntity <String> entity = new HttpEntity<String>(headers);

      return restTemplate.exchange("
         http://localhost:8080/products", HttpMethod.GET, entity, String.class).getBody();
   }
}

POST

通过使用RestTemplate的exchange()方法来使用POST API,假设此URL => http://localhost:8080/products 返回如下所示的响应,使用Rest模板测试此API响应。下面给出的代码是请求正文。

代码语言:javascript
复制
{
   "id":"3",
   "name":"Ginger"
}

下面给出的代码是响应内容。

代码语言:javascript
复制
Product is created successfully

需要遵循以下给出的要点来使用API。

1.自动装配Rest模板对象。2.使用HttpHeaders设置请求标头。3.使用HttpEntity包装请求对象。在这里将Product对象包装起来以将其发送到请求主体。

为exchange()方法提供URL,HttpMethod和Return类型。

代码语言:javascript
复制
@RestController
public class ConsumeWebService {
   @Autowired
   RestTemplate restTemplate;

   @RequestMapping(value = "/template/products", method = RequestMethod.POST)
   public String createProducts(@RequestBody Product product) {
      HttpHeaders headers = new HttpHeaders();
      headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
      HttpEntity<Product> entity = new HttpEntity<Product>(product,headers);

      return restTemplate.exchange(
         "http://localhost:8080/products", HttpMethod.POST, entity, String.class).getBody();
   }
}

PUT

通过使用RestTemplate的exchange()方法来使用PUT API。假设此URL=> http://localhost:8080/products/3 返回以下响应,使用RestTemplate来响应此API。下面给出的代码是请求主体。

代码语言:javascript
复制
{
   "name":"Huawei"
}

下面给出的代码是响应结果。

代码语言:javascript
复制
Product is updated successfully

必须遵循以下给出的要点来使用API -

1.自动装配Rest模板对象。2.使用HttpHeaders设置请求标头。3.使用HttpEntity包装请求对象。在这里将Product对象包装起来以将其发送到请求主体。

exchange()方法提供URL,HttpMethod和Return类型。

代码语言:javascript
复制
@RestController
public class ConsumeWebService {
   @Autowired
   RestTemplate restTemplate;

   @RequestMapping(value = "/template/products/{id}", method = RequestMethod.PUT)
   public String updateProduct(@PathVariable("id") String id, @RequestBody Product product) {
      HttpHeaders headers = new HttpHeaders();
      headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
      HttpEntity<Product> entity = new HttpEntity<Product>(product,headers);

      return restTemplate.exchange(
         "http://localhost:8080/products/"+id, HttpMethod.PUT, entity, String.class).getBody();
   }
}

DELETE

通过使用RestTemplate的 exchange()方法来使用DELETE API,假设此URL => http://localhost:8080/products/3 返回下面给出的响应,将使用RestTemplate来使用此API响应。下面显示的这行代码是响应正文。

代码语言:javascript
复制
Product is deleted successfully

必须按照下面显示的点来使用API。

1.自动装配Rest模板对象。2.使用HttpHeaders设置请求标头。3.使用HttpEntity包装请求对象。

为exchange()方法提供URL,HttpMethod和Return类型。

代码语言:javascript
复制
@RestController
public class ConsumeWebService {
   @Autowired
   RestTemplate restTemplate;

   @RequestMapping(value = "/template/products/{id}", method = RequestMethod.DELETE)
   public String deleteProduct(@PathVariable("id") String id) {
      HttpHeaders headers = new HttpHeaders();
      headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
      HttpEntity<Product> entity = new HttpEntity<Product>(headers);

      return restTemplate.exchange(
         "http://localhost:8080/products/"+id, HttpMethod.DELETE, entity, String.class).getBody();
   }
}

完整的Rest Template控制器类文件如下。

代码语言:javascript
复制
import java.util.Arrays;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;

import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import com.yiibai.demo.model.Product;

@RestController
public class ConsumeWebService {
   @Autowired
   RestTemplate restTemplate;

   @RequestMapping(value = "/template/products")
   public String getProductList() {
      HttpHeaders headers = new HttpHeaders();
      headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
      HttpEntity<String> entity = new HttpEntity<String>(headers);

      return restTemplate.exchange(
         "http://localhost:8080/products", HttpMethod.GET, entity, String.class).getBody();
   }
   @RequestMapping(value = "/template/products", method = RequestMethod.POST)
   public String createProducts(@RequestBody Product product) {
      HttpHeaders headers = new HttpHeaders();
      headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
      HttpEntity<Product> entity = new HttpEntity<Product>(product,headers);

      return restTemplate.exchange(
         "http://localhost:8080/products", HttpMethod.POST, entity, String.class).getBody();
   }
   @RequestMapping(value = "/template/products/{id}", method = RequestMethod.PUT)
   public String updateProduct(@PathVariable("id") String id, @RequestBody Product product) {
      HttpHeaders headers = new HttpHeaders();
      headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
      HttpEntity<Product> entity = new HttpEntity<Product>(product,headers);

      return restTemplate.exchange(
         "http://localhost:8080/products/"+id, HttpMethod.PUT, entity, String.class).getBody();
   }
   @RequestMapping(value = "/template/products/{id}", method = RequestMethod.DELETE)
   public String deleteProduct(@PathVariable("id") String id) {
      HttpHeaders headers = new HttpHeaders();
      headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
      HttpEntity<Product> entity = new HttpEntity<Product>(headers);

      return restTemplate.exchange(
         "http://localhost:8080/products/"+id, HttpMethod.DELETE, entity, String.class).getBody();
   }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 落叶飞翔的蜗牛 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • GET
  • POST
  • PUT
  • DELETE
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档