HttpClient,微信小程序,Spring Cache
HttpClient:
简介:
- HttpClient是Apache Jakarta Common下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议;
导入:
- 在maven项目中的pom.xml文件直接导入
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
核心API:
- HttpClient:接口,用于发送http请求;
- HttpClients:相当于是构建器,用于创建一个HttpClient对象;
- CloseableHttpClient:是HttpClient的实现类,实现了HttpClient接口;
- HttpGet:代表get请求;
- HttpPost:代表post请求
发送请求步骤:
GET请求:
-
创建HttpClient对象;
-
使用HttpClients类中的createDefault()静态方法创建HttpClient对象;
-
CloseableHttpClient httpClient = HttpClients.createDefault();
-
-
创建请求对象;
-
new一个HttpGet对象,参数为请求地址;可以是字符串也可以是URI类;
-
HttpGet httpGet = new HttpGet("http://localhost:8080/user/status");
-
-
发送请求,接收响应结果;
-
使用HttpClient对象中的execute(参数)方法,参数为HttpGet请求对象;
-
返回值是服务端响应结果;
-
CloseableHttpResponse response = httpClient.execute(httpGet);
-
-
获取服务端返回的状态码;
-
使用response对象中的getStatusLine()方法获取,获取HTTP 响应的状态码、原因短语和协议版本等信息;
-
再使用getStatusCode()方法获取HTTP响应的状态码;
-
int statusCode = response.getStatusLine().getStatusCode(); System.out.println("服务端返回的状态码为:"+statusCode);
-
-
获取服务端返回的数据;
-
使用response对象中的getEntity()方法获取封装服务端返回数据的HttpEntity对象;
-
使用EntityUtils工具类中的toString(参数)静态方法,参数为HttpEntity对象;返回值是json字符串;
-
HttpEntity entity = response.getEntity(); String body = EntityUtils.toString(entity); System.out.println("服务端返回的数据为:"+body);
-
-
关闭资源;
-
使用close()方法,关闭response对象和HttpClient对象;
-
response.close(); httpClient.close();
-
Post请求:
- 与Get请求差不多;将new一个HttpGet对象,换为HttpPost对象;
- HttpPost对象中的setEntity(参数)方法,来添加json类型参数,参数类型为Entity类型;
- Entity属于接口,使用实现类StringEntity;
- 创建JSONObject对象,使用put(键,值)方法,来设置传递的参数;
- 创建一个StringEntity对象,参数为json字符串;如
StringEntity entity = new StringEntity(jsonObject.toString())
;- setContentEncoding(参数):指定请求编码方式,参数为字符串,如
utf-8
; - setContentType(参数):设置请求数据格式,参数为字符串,如
application/json
;
- setContentEncoding(参数):指定请求编码方式,参数为字符串,如
URIBuilder:
- 用于创建和修改URI;
- 构造方法:有参构造,在创建对象是传入请求的地址;
- 常用方法:
- addParameter(键,值):为URI地址添加请求参数;
- build():生成URI对象;
- URI对象和URL差不多用法;
微信小程序:
常用API:
wx.getUserInfo:
-
简介:用于获取用户的公开信息,包括昵称、头像、性别等。这个API需要用户授权才能调用,并且只能获取到用户的公开信息,不能获取到用户的敏感信息(如手机号、身份证号等);
-
使用:
wx.getUserInfo({ // 请求成功方法和返回的数据 success: function(res) { console.log(res.userInfo); // 打印用户信息 } });
wx.login:
-
简介:用于获取登录凭证(code)。这个凭证可以用于发送给开发者服务器,以获得用户的登录凭证(session_key)和用户信息;
-
使用:
wx.login({ // 请求成功的方法 success: function(res) { //登录凭证 console.log(res.code) } })
wx.request:
-
简介:微信小程序中用于发起网络请求的API。它可以用来发送HTTP请求,获取服务器返回的数据或向服务器发送数据;
-
使用:
wx.request({ url: 'https://example.com/api', // 请求的URL地址 data: { key1: 'value1', key2: 'value2' }, // 要发送给服务器的数据(可选) header: { 'content-type': 'application/json' }, // 设置请求头(可选) method: 'GET', // 请求方法,可以是GET、POST等(可选,默认为GET) success: function(res) { // 请求成功的回调函数,可以在这里处理服务器返回的数据 console.log(res.data); }, fail: function(err) { // 请求失败的回调函数,可以在这里处理错误信息 console.error(err); } });
Spring Cache
简介:
- Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能;
- Spring Cache提供了一层抽象,底层可以切换不同的缓存实现,例如:
- EHCache
- Caffeine
- Redis
实现:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
<version>2.7.3</version>
</dependency>
常用注解:
注解 | 说明 |
---|---|
@EnableCaching | 开启缓存注解功能,通常加在启动类上 |
@Cacheable | 在方法执行前先查询缓存中是否有数据,如果有数据,则直接返回缓存数据;如果没有缓存数据,调用方法并将方法返回值放到缓存中 |
@CachePut | 将方法的返回值放到缓存中 |
@CacheEvict | 将一条或多条数据从缓存中删除 |
注解属性:
共同属性
- cacheNames:属性指定了缓存的名称,它是必须提供的;例:
@CachePut(cacheNames = “userCache”)
; - key:key属性是用来指定缓存条目的键,这个键是唯一标识一个缓存条目的。该属性支持使用SpEL表达式;
- 例:
@CachePut(cacheNames = “userCache”,key = "#user.id")
; - #号是SpEL表达式,后面跟随的是一个对象,id是user对象的属性;
- 最后生成的key为useCache::user.id的值;
- 例:
@CacheEvict属性:
- allEntries:当属性为true时,删除指定缓存的所有条目;例:
@CacheEvict(cacheNames = "userCache,allEntries = true")
;