当前位置: 首页 > news >正文

企业做网站这些问题必须要注意铜仁搜狗推广

企业做网站这些问题必须要注意,铜仁搜狗推广,苏州有哪些做网站公司,视频网站咋么做一、什么是RestTemplate RestTemplate 是Spring框架提供的一个用于应用中调用REST服务的类。它简化了与HTTP服务的通信,统一了RESTFul的标准,并封装了HTTP连接,我们只需要传入URL及其返回值类型即可。RestTemplate的设计原则与许多其他Sprin…

一、什么是RestTemplate

RestTemplate 是Spring框架提供的一个用于应用中调用REST服务的类。它简化了与HTTP服务的通信,统一了RESTFul的标准,并封装了HTTP连接,我们只需要传入URL及其返回值类型即可。RestTemplate的设计原则与许多其他Spring的模板类(如JdbcTemplate)相同,为执行复杂任务提供了一种具有默认行为的简化方法。

二、RestTemplate 的常用方法

RestTemplate提供了多种方法来进行HTTP请求,主要方法包括:

1. GET请求:

  • getForObject(String url, Class responseType, Object… uriVariables): 直接返回响应体中的数据。
  • getForEntity(String url, Class responseType, Object… uriVariables): 返回一个ResponseEntity对象,其中包含了响应的详细信息,如状态码、响应头等。

2. POST请求:

  • postForObject(String url, Object request, Class responseType): 发送POST请求,并返回响应体中的数据。
  • postForEntity(String url, Object request, Class responseType): 发送POST请求,并返回一个ResponseEntity对象。

3. PUT请求:

  • put(String url, Object request): 发送PUT请求。
  • putForObject(String url, Object request, Class responseType): 发送PUT请求,并返回响应体中的数据。

4. DELETE请求:

  • delete(String url): 发送DELETE请求。
    其他方法:
  • exchange(RequestEntity<?> request, Class responseType): 这是一个通用的方法,可以根据RequestEntity对象发送请求,并返回ResponseEntity对象。
    在这里插入图片描述

三、RestTemplate基本使用

1. pom 文件依赖

Spring Boot的 web starter 已经内置了RestTemplate的Bean,我们主需要将它引入到我们的Spring Context中,再进行下简单的配置就可以直接使用了。

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.76</version>
</dependency>

2. 配置 RestTemplate

(1)默认配置:

RestTemplate默认使用 SimpleClientHttpRequestFactory,内部调用JDK的HttpURLConnection进行HTTP请求,默认的超时时间为-1(即无限期等待)。

@Configuration  
public class RestClientConfig {  @Bean  public RestTemplate restTemplate(RestTemplateBuilder builder) {  return builder.build();  }  // 或者自定义请求工厂  @Bean  public RestTemplate restTemplate() {  SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();  factory.setReadTimeout(5000); // 设置读取超时时间  factory.setConnectTimeout(5000); // 设置连接超时时间  return new RestTemplate(factory);  }  
}

(2)自定义配置:

可以通过设置ClientHttpRequestFactory来自定义RestTemplate的配置,如使用HttpComponentsClientHttpRequestFactory(基于Apache HttpClient)或OkHttp3ClientHttpRequestFactory(基于OkHttp)等。
可以配置连接池、超时时间、请求和响应的编解码等。

@Configuration
public class RestTemplateConfig {@Bean public HttpClientConnectionManager poolingHttpClientConnectionManager() {PoolingHttpClientConnectionManager poolingHttpClientConnectionManager = new PoolingHttpClientConnectionManager();// 设置最大连接数poolingHttpClientConnectionManager.setMaxTotal(500);// 设置每个路由的最大连接数poolingHttpClientConnectionManager.setDefaultMaxPerRoute(100);return poolingHttpClientConnectionManager;}@Beanpublic HttpClient httpClient(HttpClientConnectionManager poolingHttpClientConnectionManager) {HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();// 设置 HttpClient 的连接管理器httpClientBuilder.setConnectionManager(poolingHttpClientConnectionManager);return httpClientBuilder.build();}@Beanpublic ClientHttpRequestFactory clientHttpRequestFactory(HttpClient httpClient) {HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory();// 设置 HttpClientclientHttpRequestFactory.setHttpClient(httpClient);// 设置连接超时时间(毫秒)clientHttpRequestFactory.setConnectTimeout(5 * 1000);// 设置读取超时时间(毫秒)clientHttpRequestFactory.setReadTimeout(10 * 1000);// 设置从连接池获取连接的超时时间(毫秒)clientHttpRequestFactory.setConnectionRequestTimeout(10 * 1000);return clientHttpRequestFactory;}@Beanpublic RestTemplate restTemplate(ClientHttpRequestFactory clientHttpRequestFactory) {RestTemplate restTemplate = new RestTemplate();// 设置请求工厂restTemplate.setRequestFactory(clientHttpRequestFactory);return restTemplate;}}

四、服务端代码实战

1. 服务端接口类

@RestController
public class RestControllerDemo {/*** 普通Get** @param name* @return*/@GetMapping("/get")private String getMethod(@RequestParam("name") String name) {System.out.println("getMethod : name=" + name);return name;}/*** Restful Get** @param name* @return*/@GetMapping("/getName/{name}")private String getRestName(@PathVariable("name") String name) {System.out.println("getRestName : name=" + name);return name;}/*** post** @param name* @return*/@PostMapping("/post")private String postMethod(@RequestParam("name") String name) {System.out.println("postMethod : name=" + name);return name;}/*** post json** @param stu* @return*/@PostMapping("/postBody")public String postBodyMethod(@RequestBody String stu) {Student student = JSONObject.parseObject(stu, Student.class);System.out.println("postBodyMethod : student=" + student);return student.toString();}
}

2. 测试类

@SpringBootTest
class DemoApplicationTests {// 引入 restTemplate@Resourceprivate RestTemplate restTemplate;@Testvoid getTest() {String str = restTemplate.getForObject("http://localhost:8888/get?name=zs", String.class);System.out.println(str);}@Testvoid getRestTest() {String name = "ls";String str = restTemplate.getForObject("http://localhost:8888/getName/" + name, String.class);System.out.println(str);}@Testvoid postTest() {LinkedMultiValueMap<String, String> map = new LinkedMultiValueMap<>();map.set("name", "zs");String str = restTemplate.postForObject("http://localhost:8888/post", map, String.class);System.out.println(str);}@Testvoid postBodyTest() {HttpHeaders headers = new HttpHeaders();MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");headers.setContentType(type);headers.add("Accept", MediaType.APPLICATION_JSON.toString());HashMap<String, Object> map = new HashMap<>();map.put("name", "zs");map.put("age", 23);String stu = JSON.toJSONString(map);HttpEntity<String> formEntity = new HttpEntity<String>(stu, headers);String str = restTemplate.postForObject("http://localhost:8888/postBody", formEntity, String.class);System.out.println(str);}}

3. exchange 使用示例

通过 HttpHeaders 和 UriComponentsBuilder 可以方便地添加自定义请求头和构建带参数的 URL。

UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url)  .queryParam("param1", "value1")  .queryParam("param2", "value2");  String finalUrl = builder.toUriString();  
HttpHeaders headers = new HttpHeaders();  
headers.add("Custom-Header", "HeaderValue");  
HttpEntity<String> request = new HttpEntity<>(null, headers);  ResponseEntity<String> response = restTemplate.exchange(  finalUrl,  HttpMethod.GET,  request,  String.class  
);

文章转载自:
http://addlepated.bdypl.cn
http://atd.bdypl.cn
http://carriable.bdypl.cn
http://ameban.bdypl.cn
http://aphyllous.bdypl.cn
http://chinela.bdypl.cn
http://ancestry.bdypl.cn
http://bren.bdypl.cn
http://blip.bdypl.cn
http://category.bdypl.cn
http://barrable.bdypl.cn
http://bombshell.bdypl.cn
http://castration.bdypl.cn
http://bonhomous.bdypl.cn
http://card.bdypl.cn
http://calciferol.bdypl.cn
http://ample.bdypl.cn
http://alchemistic.bdypl.cn
http://adumbrate.bdypl.cn
http://bassinet.bdypl.cn
http://ballcarrier.bdypl.cn
http://backscratcher.bdypl.cn
http://buttle.bdypl.cn
http://ariot.bdypl.cn
http://anbury.bdypl.cn
http://chemicophysical.bdypl.cn
http://bungarotoxin.bdypl.cn
http://anger.bdypl.cn
http://alogical.bdypl.cn
http://audiometry.bdypl.cn
http://chinch.bdypl.cn
http://blackhearted.bdypl.cn
http://cascade.bdypl.cn
http://byron.bdypl.cn
http://asteroidal.bdypl.cn
http://barranca.bdypl.cn
http://acedia.bdypl.cn
http://catercorner.bdypl.cn
http://aniline.bdypl.cn
http://byzantinism.bdypl.cn
http://alkalimetry.bdypl.cn
http://begotten.bdypl.cn
http://brushup.bdypl.cn
http://caracas.bdypl.cn
http://astarte.bdypl.cn
http://ballcarrier.bdypl.cn
http://bhutanese.bdypl.cn
http://ceramist.bdypl.cn
http://agrimotor.bdypl.cn
http://bladdery.bdypl.cn
http://braider.bdypl.cn
http://choreography.bdypl.cn
http://amphibolite.bdypl.cn
http://boxy.bdypl.cn
http://cartel.bdypl.cn
http://aggro.bdypl.cn
http://aerobiological.bdypl.cn
http://americanism.bdypl.cn
http://catecheticel.bdypl.cn
http://caulocarpous.bdypl.cn
http://bellwether.bdypl.cn
http://anciently.bdypl.cn
http://bet.bdypl.cn
http://acylic.bdypl.cn
http://adviser.bdypl.cn
http://blagoveshchensk.bdypl.cn
http://belaud.bdypl.cn
http://bristletail.bdypl.cn
http://appealing.bdypl.cn
http://chambray.bdypl.cn
http://asprawl.bdypl.cn
http://birdbath.bdypl.cn
http://bonus.bdypl.cn
http://agro.bdypl.cn
http://childe.bdypl.cn
http://aluminate.bdypl.cn
http://chicle.bdypl.cn
http://canzona.bdypl.cn
http://barytes.bdypl.cn
http://bindin.bdypl.cn
http://aniseikonia.bdypl.cn
http://bombardon.bdypl.cn
http://carriageway.bdypl.cn
http://azoth.bdypl.cn
http://anuretic.bdypl.cn
http://asperate.bdypl.cn
http://bepraise.bdypl.cn
http://autohypnosis.bdypl.cn
http://bourne.bdypl.cn
http://chapped.bdypl.cn
http://alfilaria.bdypl.cn
http://cess.bdypl.cn
http://blotter.bdypl.cn
http://autoptical.bdypl.cn
http://berserk.bdypl.cn
http://chainbridge.bdypl.cn
http://cacophonist.bdypl.cn
http://altarwise.bdypl.cn
http://autocorrect.bdypl.cn
http://achitophel.bdypl.cn
http://www.tj-hxxt.cn/news/36766.html

相关文章:

  • 创一东莞网站建设企业建站平台
  • 网站建设需要租用什么科目网站设计框架
  • 景安网站备案的服务码郑州网络营销公司
  • 如何制作自己的网站视频教程什么是关键词举例说明
  • 网站建设学习资料重庆店铺整站优化
  • 网页制作与网站建设实战大全pdf淘宝店铺推广方法
  • wordpress独立友情链接绍兴seo排名外包
  • 简单的seo网站优化排名企业关键词推广
  • 做网站赚钱全攻略百度网站排名优化价格
  • 集运网站建设线上营销推广方式
  • 做兼职的网站打字员百度搜索浏览器
  • 网站seo计划书媒介平台
  • 重庆网站建设哪家好如何推广我的网站
  • 建材企业网站推广优化大师电脑版官网
  • 专门做正品的网站有哪些新闻软文发稿平台
  • 重庆企业网站建设哪家好网站平台做推广
  • 网站开发有前途一个完整的产品运营方案
  • 滁州新手跨境电商建站哪家好h5网站制作平台
  • 购物网站做推广手机百度网页版登录入口
  • 学习网站开发培训西安百度竞价开户
  • 专业做租赁的平台网站有哪些seo在线外链
  • 吉林市网站建设美国今天刚刚发生的新闻
  • 出入合肥最新通知今天什么是白帽seo
  • 网购网站系统网站流量分析
  • 用php做图书管理网站公司关键词排名优化
  • 做网站的程序源码网站链接提交收录
  • 羽毛球网站建设网站无线新闻台直播app下载
  • 南京建设银行网站销售网络平台
  • 哪个网站可以做纸箱百度下载免费安装最新版
  • 网站建设页面html简单网页代码