一步一步从微信小程序获取asp.net Core API的数据

news2024/10/28 11:53:04

前面我们说过,如何使用微信小程序获取asp.net的数据,这里我们继续介绍如何获取asp.net core api的数据。两者之间还是有一些差别的。本篇博文旨在详细介绍如何一步一步从微信小程序获取asp.net Core API的数据。

文章目录

  • 一、建立并了解asp.net core web API
    • 1、建立工程
    • 2、关于两个重要的文件
    • 3、API的访问测试
    • 4、自己来写一个控制器类
    • 5、设置字段的名称大小写
    • 7、添加过滤器
    • 8、默认值的设定
  • 二、微信小程序获取数据
    • 1、准备数据
    • 2、建立小程序工程
    • 3、页面版面布局
    • 4、获取数据和页面加载事件
    • 5、上下翻页
    • 6、总体的效果为:

文章原出处:
https://blog.csdn.net/haigear/article/details/143208403

一、建立并了解asp.net core web API

1、建立工程

有webapi经验的可以略过本章节,首先,建立一个asp.net core web api项目,比如我们起名为websiteAPItest,下面

在这里插入图片描述

2、关于两个重要的文件

建立好工程,下面正式开工了。进入我们建立好的工程,我们最需要关注的就是这两个文件了。首先我们就从这两个文件入手来了解。
在这里插入图片描述
从上图,我们注意到,最应该注意到的就是红色箭头所指的两个文件,因为就是他们两个具体负责我们API对外部访问所提供的数据,我们不要忘记,我们之所以要建立这个API工程,目的就是对外提供数据访问。
观察两个文件,我们发现,都很普通,尤其第一个,就是一个简单的类,或者我们在MVC中称之为Model的类,还一个在controllers下,名称叫做WeatherForecastController.cs,一看这个名字你肯定已经猜测到它就是MVC中称之为Controller的类。那么还有一个View的类呢?其实我们的微信小程序前端就是这个View了!
来,我们具体来看看代码:
WeatherForecast.cs

namespace websiteAPItest
{
    public class WeatherForecast
    {
        public DateOnly Date { get; set; }

        public int TemperatureC { get; set; }

        public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);

        public string? Summary { get; set; }
    }
}

很显然,上面的WeatherForecast.cs文件平淡无奇,就是一个普通带有几个属性的类。下面我们看看
WeatherForecastController.cs

using Microsoft.AspNetCore.Mvc;

namespace websiteAPItest.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private static readonly string[] Summaries = new[]
        {
            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
        };

        private readonly ILogger<WeatherForecastController> _logger;

        public WeatherForecastController(ILogger<WeatherForecastController> logger)
        {
            _logger = logger;
        }

        [HttpGet(Name = "GetWeatherForecast")]
        public IEnumerable<WeatherForecast> Get()
        {
            return Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
                TemperatureC = Random.Shared.Next(-20, 55),
                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
            })
            .ToArray();
        }
    }
}

这个类倒是有些新的东西,每个方法前都有一个特性描述,类的前面也有特性描述。除此没有其他特别了,至于这里实现了一个枚举接口的Get方法,也不是controller类必须的。其实随便的一个添加了特性描述的方法的controller类都是可以的。后面我们将自己建立一个最简单的controller类。

文章原出处:
https://blog.csdn.net/haigear/article/details/143208403

3、API的访问测试

预览效果我们会发现,会呈现一个web端的swagger访问页面,这里出现的就是我们在项目中对应的weatherforecast的接口。
在这里插入图片描述
打开这个接口我们可以通过普通的http协议来访问,也就是说,我们可以在web浏览器上直接输入地址访问,点开get栏的下拉图标,我们会发现Request URL中有一个url地址,我们试试访问一下:
在这里插入图片描述
在这里插入图片描述
这就是我们通过url访问得到的jason格式的数据,这些数据我们就可以直接拿到微信小程序中去使用了。

4、自己来写一个控制器类

我们来自己编写一个控制器类,添加一个类,选择API控制器-空:
在这里插入图片描述

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace websiteAPItest.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        [HttpGet(Name = "Hello")]
        public string SayHello()
        {
            return "welcome to asp.net core web api";
        }
    }
   
}

在这里插入图片描述
文章原出处:
https://blog.csdn.net/haigear/article/details/143208403

在这里插入图片描述

5、设置字段的名称大小写

前面我们应该发现了一个小问题,那就是所有的属性在jason文件中都是小写,我们实际在使用的时候如果是需要区别大小写的,那就需要我们去一个个修正,尤其是与数据库访问结合的时候就会出错,那太麻烦了,这里微软也给出了一个设置的方法来解决这样的问题。
我们来看看没有修正之前的状况:
在这里插入图片描述
首先在依赖中引入Microsoft.AspNetCore.Mvc.NewtonsoftJson,
在这里插入图片描述
同时,在程序中引入 然后在program.cs中将builder.Services.AddControllers()x修改为下面的代码即可。
using Microsoft.AspNetCore.Mvc.NewtonsoftJson;

builder.Services.AddControllers().AddNewtonsoftJson(options => { 

options.SerializerSettings.ContractResolver=new DefaultContractResolver();

});

修改后,显示效果如下:
在这里插入图片描述

7、添加过滤器

我们在获取一个刚刚初始化类的实例对象时往往获得的都是空值,但对于我们的小程序而言,可能就比较麻烦,好多的空值会引起错误,或者也缺乏辨识度,比如字符串类型的API给出的默认值就是string,我们来看看默认设定默认值之前是什么样的效果:
如,我这里有一个PersonalInfo类,我们实现了最简单的控制器,代码如下:

using System;
namespace websiteAPItest.Models
{

    public class PersonalInfo
        {
            public string Name { get; set; }
            public int Age { get; set; }
            public string Gender { get; set; }
            public string Email { get; set; }
            public string PhoneNumber { get; set; }
            public DateTime BirthDate { get; set; }
            public string Address { get; set; }
            public string Occupation { get; set; }
            public string Nationality { get; set; }
        }
}

控制器代码

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using websiteAPItest.Models;

namespace websiteAPItest.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class PersonalInfoController : ControllerBase
    {
        [HttpGet(Name ="getPersonList")]
        
        public IList<PersonalInfo> GetPersonalInfoList(int sid,int eid)
        {
            // 假设这里有一些数据获取逻辑,可以根据实际情况修改
            List<PersonalInfo> personList = new List<PersonalInfo>();
            for (int i = sid; i <= eid; i++)
            {
                personList.Add(new PersonalInfo { Name = $"Person {i}", Age = i % 10 + 20 });
            }
            return personList;
        }
    }
}

在这里插入图片描述

很显然,这里出现了很多的string,这不是我们需要的。我们现在增加一个过滤器来看看:
在这里插入图片描述

显然,那成堆的string消失了。那么我们怎么办到的呢?这就是使用了过滤器,过滤器的增加分为两步:
1、在builder.Services.AddSwaggerGen中添加option

builder.Services.AddSwaggerGen(option =>
{

   option.SchemaFilter<CommSchemaFilter>();

});

2、添加一个过滤器类并实现其接口(过滤器名称自己定),这里我们名称为CommSchemaFilter

using Microsoft.OpenApi.Any;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;

namespace websiteAPItest.Assist
{
    public class CommSchemaFilter : ISchemaFilter
    {
        public void Apply(OpenApiSchema schema, SchemaFilterContext context)
        {
            if (schema == null) return;
            var objectSchema = schema;
            foreach (var property in objectSchema.Properties)
            {
                if (property.Value.Type == "string" && property.Value.Default == null)
                {
                    property.Value.Default = new OpenApiString("");
                }
                if (property.Key == "pageIndex")
                {
                    property.Value.Default = new OpenApiInteger(1);
                }
                else if (property.Key == "pageSize")
                {
                    property.Value.Default = new OpenApiInteger(10);
                }
            }
        }
    }
}

8、默认值的设定

虽然过滤掉了那些string,但我们为了防止空值导致程序错误,我们还是需要为刚刚实例化的对象添加默认值,添加默认值的办法有很多,比如在过滤器中用语句判断,这个实现起来比较灵活,但麻烦。下面我们就特性标注的方法来实现它。也就是说在模型类中为每个属性添加特性标注。如:

using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace websiteAPItest.Models
{
    public class PersonalInfo
    {
        [Required]
        [StringLength(50)]
        [DefaultValue("张三")]
        public string Name { get; set; }

        [Required]
        [Range(0, 150)]
        [DefaultValue(24)]
        public int Age { get; set; }

        [Required]
        [StringLength(10)]
        [DefaultValue("男")]
        public string Gender { get; set; }

        [Required]
        [EmailAddress]
        [DefaultValue("zhangsan@example.com")]
        public string Email { get; set; }

        [Required]
        [Phone]
        [DefaultValue("13788888888")]
        public string PhoneNumber { get; set; }

        [Required]
        [DataType(DataType.Date)]
        [DefaultValue("2000-01-01")]
        public DateTime BirthDate { get; set; }

        [Required]
        [StringLength(100)]
        [DefaultValue("张家口市张家镇张家村张家冲21号")]
        public string Address { get; set; }

        
        [StringLength(50)]
        [DefaultValue("码农")]
        public string Occupation { get; set; }

        [Required]
        [StringLength(30)]
        [DefaultValue("China")]
        public string Nationality { get; set; }
    }
}

效果如下:
在这里插入图片描述
好了,数据基本处理好了,那接下来是我们如何用微信小程序获取到我们需要的数据了。至于我们需要读取数据库中的内容来提供给微信小程序来访问,我们可以后面专门来讲。因为数据里面的内容也算不少了,比如说sqlsugar等ORM框架

文章原出处:
https://blog.csdn.net/haigear/article/details/143208403

二、微信小程序获取数据

1、准备数据

我先偷了个懒,没有使用数据库,我们首先对刚刚的控制器进行了一些改造,令其随机生成了一些个人信息,以供后面的测试使用(当然,你也可以把一些数据写死,这也是没有问题的,只是没有什么新鲜感而已),访问的效果是这样:
在这里插入图片描述
显然有点男女不分,但我们先不管它了,我们继续我们的小程序。

2、建立小程序工程

有过小程序基础的可以直接跳过阅读本节。而且我们也直接建立一个新的页面开始。
在这里插入图片描述
我们在pages文件夹中添加一个新的页面我们叫做PersonalInfo,点击编译旁边的下拉箭头,增加一个编译模式,目的在于把当前编辑仿真的页面修改为刚刚新建立的页面:
在这里插入图片描述

3、页面版面布局

<view class="infoContainer">
   <view class="title">个人信息详情</view>
  <view class="info">
    <view class="titem">姓名:{{currentInfo.Name}}</view>
    <view class="titem">年龄:{{currentInfo.Age}}</view>
    <view class="titem">性别:{{currentInfo.Gender}}</view>
    <view class="titem">邮箱:{{currentInfo.Email}}</view>
    <view class="titem">电话:{{currentInfo.PhoneNumber}}</view>
    <view class="titem">出生日期:{{currentInfo.BirthDate}}</view>
    <view class="titem">地址:{{currentInfo.Address}}</view>
    <view class="titem">职业:{{currentInfo.Occupation}}</view>
    <view class="titem">国籍:{{currentInfo.Nationality}}</view>
  </view>
</view>
  <view class="btn">
    <button bindtap="prevInfo" class="bitem">上一个</button>
    <button bindtap="nextInfo" class="bitem">下一个</button>
  </view>

文章原出处:
https://blog.csdn.net/haigear/article/details/143208403

4、获取数据和页面加载事件

事件主要是页面加载的时候我们通过api获取数据后放置在personalInfoList中,默认的游标我们设置为currentIndex0,onload中

data: {
    personalInfoList: [],
    currentIndex: 0
  },
onLoad: function () {
    // 发起网络请求获取数据
    wx.request({
      url: 'http://localhost:5043/api/PersonalInfo',
      data: {
        sid: 3,
        eid: 6
      },
      success: res => {
        this.setData({
          personalInfoList: res.data,
          currentIndex: 0 // 设置当前索引为第一个元素
        });
        // 如果有数据,显示第一个元素的信息
        if (res.data.length > 0) {
          this.setData({
            // 分别设置各个属性到对应的数据绑定变量中
            'currentInfo.Name': res.data[0].Name,
            'currentInfo.Age': res.data[0].Age,
            'currentInfo.Gender': res.data[0].Gender,
            'currentInfo.Email': res.data[0].Email,
            'currentInfo.PhoneNumber': res.data[0].PhoneNumber,
            'currentInfo.BirthDate': res.data[0].BirthDate,
            'currentInfo.Address': res.data[0].Address,
            'currentInfo.Occupation': res.data[0].Occupation,
            'currentInfo.Nationality': res.data[0].Nationality
          });
        }
      }
    });
  },

这里使用 wx.request获取数据,然后将数据res.data存储在数组中personalInfoList,没有微信小程序基础的情参考我前面的博文,这里不再逐一讲解。

5、上下翻页

上下翻页比较简单,就是利用index来改变访问数组的游标。这里大家看看代码就可以了。没有什么技术含量:

prevInfo: function () {
    let index = this.data.currentIndex;
    index = index > 0? index - 1 : this.data.personalInfoList.length - 1;
    this.setData({
      currentIndex: index
    });
    // 更新显示的信息
    this.setData({
      'currentInfo.Name': this.data.personalInfoList[index].Name,
      'currentInfo.Age': this.data.personalInfoList[index].Age,
      'currentInfo.Gender': this.data.personalInfoList[index].Gender,
      'currentInfo.Email': this.data.personalInfoList[index].Email,
      'currentInfo.PhoneNumber': this.data.personalInfoList[index].PhoneNumber,
      'currentInfo.BirthDate': this.data.personalInfoList[index].BirthDate,
      'currentInfo.Address': this.data.personalInfoList[index].Address,
      'currentInfo.Occupation': this.data.personalInfoList[index].Occupation,
      'currentInfo.Nationality': this.data.personalInfoList[index].Nationality
    });
  },
  nextInfo: function () {
    let index = this.data.currentIndex;
    index = index < this.data.personalInfoList.length - 1? index + 1 : 0;
    this.setData({
      currentIndex: index
    });
    // 更新显示的信息
    this.setData({
      'currentInfo.Name': this.data.personalInfoList[index].Name,
      'currentInfo.Age': this.data.personalInfoList[index].Age,
      'currentInfo.Gender': this.data.personalInfoList[index].Gender,
      'currentInfo.Email': this.data.personalInfoList[index].Email,
      'currentInfo.PhoneNumber': this.data.personalInfoList[index].PhoneNumber,
      'currentInfo.BirthDate': this.data.personalInfoList[index].BirthDate,
      'currentInfo.Address': this.data.personalInfoList[index].Address,
      'currentInfo.Occupation': this.data.personalInfoList[index].Occupation,
      'currentInfo.Nationality': this.data.personalInfoList[index].Nationality
    });
  },
 get currentInfo() {
    return this.data.personalInfoList[this.data.currentIndex];
  }

6、总体的效果为:

在这里插入图片描述
对了,样式我没有特别的去美化,也没有用vant这类UI框架,只为展示一下数据获取,所以,这里就简单的写了一些CSS,代码如下:

/* pages/PersonalInfo/PersonalInfo.wxss */
.infoContainer
{
   display: flex;
   flex-direction: column;
   justify-content: left;
   padding-top: 140rpx;
   margin-left: 80rpx;
}
.title
{
   font-size: large;
   font-weight: 800;
   margin-bottom: 80rpx;
   justify-content: center;
}
.titem
{
  padding: 20rpx;
}
.btn
{
  display: flex;
  flex-direction: row;
  justify-content: left;
  padding-top: 40rpx;

}
.bitem
{
  width: 60rpx; /* 减小宽度 */
  height: 80rpx; /* 减小高度 */
 
   background-color: rgb(236, 248, 248);
   padding: 20rpx;
   margin: 80rpx;
  
}

文章随时可能更新,感兴趣的情关注文章原出处:
https://blog.csdn.net/haigear/article/details/143208403

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2225409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git 创建SSH秘钥

1、命令行输入 ssh-keygen -t rsa -b 4096 2、系统提示你“Enter a file in which to save the key”&#xff0c;直接按回车键 3、再提示你输入密码的时候直接按回车键&#xff0c;创建没有密码的SSH密钥 4、密钥对创建后&#xff0c;可以在自己电脑对应的 ~/.ssh 目录下找到…

vue 果蔬识别系统百度AI识别vue+springboot java开发、elementui+ echarts+ vant开发

编号&#xff1a;R03-果蔬识别系统 简介&#xff1a;vuespringboot百度AI实现的果蔬识别系统 版本&#xff1a;2025版 视频介绍&#xff1a; vuespringboot百度AI实现的果蔬识别系统前后端java开发&#xff0c;百度识别&#xff0c;带H5移动端&#xff0c;mysql数据库可视化 1 …

Unity编辑器制作多级下拉菜单

Unity编辑器下拉菜单 大家好&#xff0c;我是阿赵。   在Unity引擎里面编写工具插件&#xff0c;有时候会用到一些特殊的菜单形式&#xff0c;比如下拉选项。 通过下拉菜单&#xff0c;给用户选择不同的选项。   如果只是一层的下拉列表&#xff0c;可以用EditorGUILayout.…

西南大学软件专硕考研难度分析!

C哥专业提供——计软考研院校选择分析专业课备考指南规划 西南大学软件工程学硕近三年呈现出招生规模稳定、复试线稳中有升的特点。2024届实际录取8人&#xff0c;复试分数线305分&#xff0c;复试录取率67%&#xff0c;相比去年复试线略有下降但仍高于2022届&#xff0c;显示出…

Maven 项目构建打包,如何引入本地 Jar 包?

上一篇讲到 Maven 离线仓库的使用&#xff0c;反响不错很多人收藏&#xff0c;这一篇还是继续聊 Maven 。假如你发现某开源项目有个 bug 影响到自己的系统&#xff0c;但官方还没修复&#xff0c;自己定位到了本地修改打了包先应急用&#xff0c;那么如何在其他项目上使用该包&…

【动态规划】力扣198.打家劫舍

目录 一、题目二、思路1.递归2.递推 三、代码 一、题目 二、思路 1.递归 题目中指出不可以选相邻的房间&#xff0c;说明如果选了第 1 间&#xff0c;那么第 2 间一定不可以选&#xff0c;第 3 间房间可以选&#xff0c;也可以不选……假设是按照从第 1 间房间开始依次往后选…

【测试】——Fiddler入门

&#x1f4d6; 前言&#xff1a;本文介绍Fiddler&#xff0c;一个强大的HTTP协议调试代理工具。文章详细讲解了Fiddler的安装步骤、基础操作、抓包技巧以及模拟测试等内容。 目录 &#x1f552; 1. Fiddler基础介绍&#x1f558; 1.1 安装&#x1f558; 1.2 基础操作&#x1f5…

[oeasy]python038_ range函数_大小写字母的起止范围_start_stop

range函数_大小写字母的起止范围_start_stop 回忆上次内容 所有字符 都有序号 就连 空格 也不例外 空格 序号32是 print函数中 sep参数的 默认值 字符 在计算机中 用数字序号 来 存储表示 字符序号 有规律 a 对应 97b 对应 98c 对应 99 连续字母 对应 连续序号 似乎应该是 天经…

SOLID - 接口隔离原则(Interface Segregation Principle)

SOLID - 接口隔离原则&#xff08;Interface Segregation Principle) 定义 接口隔离原则&#xff08;Interface Segregation Principle&#xff0c;ISP&#xff09;是面向对象设计中的五个基本原则之一&#xff0c;通常缩写为SOLID中的I。这一原则由Robert C. Martin提出&…

校园气膜体育馆:学生锻炼与成长的新空间—轻空间

在现代教育中&#xff0c;学生的身心健康日益受到重视&#xff0c;校园体育设施的建设成为学校发展的重要一环。为更好地满足学生在节假日锻炼与学习的需求&#xff0c;校园气膜体育馆应运而生&#xff0c;成为校园内一处崭新的活力空间。 打破场地限制&#xff0c;打造优质运动…

LeetCode 热题 100之矩阵

1.矩阵置0 思路分析&#xff1a;使用标记数组 记录需要置为 0 的行和列&#xff1a;使用两个布尔数组 zeroRows 和 zeroCols 来记录需要置为 0 的行和列两次遍历 第一遍遍历整个矩阵&#xff0c;找到所有为0的元素&#xff0c;并更新zeroRows和zeroCols&#xff1b;第二遍遍历…

快速入门HTML

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗 如有错误&#xff0c;欢迎指出~ 目录 第一个html文件 标签 h1~h6 p >段落标签 br > 换行标签 img >图片标签 a >超链接标签 表格标签 表单标签 表单控件 form表单 ⽆语义标签:div&span 综…

虚拟现实在制造业中的应用

当你想到制造业中的虚拟现实技术时&#xff0c;你脑海中闪过的第一个念头是什么&#xff1f;从目前来看&#xff0c;只需几年时间&#xff0c;制造业就将离不开虚拟现实技术的帮助。实施虚拟现实应用对制造业来说都有诸多好处。通常情况下&#xff0c;制造设施都是由各种机器组…

右键以vscode打开目录的时候出现找不到应用程序

出现这个问题的主要原因&#xff0c;大概率可能是因为你移动了vscode的安装路径导致的。 解决办法 打开注册表&#xff1a;通过cmd 打开regedit 然后搜索&#xff1a;计算机\HKEY_CLASSES_ROOT\Directory\Background\shell 这个两个参数可以自己比对一下&#xff0c;主要需要检…

【再谈设计模式】单例模式~唯一性的守护者

一、引言 在软件工程中&#xff0c;软件开发&#xff0c;设计模式是提高代码复用性和可维护性的有效工具。单例模式&#xff08;Singleton Pattern&#xff09;作为一种创建型设计模式&#xff0c;旨在确保一个类只有一个实例&#xff0c;并提供对该实例的全局访问。这一模式在…

unity 导入的模型设置详谈

文章目录 1.Model 模型1.1 Scene&#xff1a;场景级属性&#xff0c;例如是否导入灯光和照相机&#xff0c;以及使用什么比例因子1.2 Mesh&#xff1a;网格的属性1.3 Generate &#xff1a;与几何相关的属性&#xff0c;用于处理拓扑&#xff0c;UV和法线 2.Rig 骨骼3.Animatio…

C语言小游戏3——扫雷

扫雷游戏 1. 扫雷游戏的功能说明 使用控制台实现经典的扫雷游戏游戏可以通过菜单实现继续玩或者退出游戏扫雷的棋盘是 9*9的格子默认随机布置 10个雷可以排查雷如果位置不是雷&#xff0c;就显示周围有几个雷如果位置是雷&#xff0c;就炸死游戏结束把除10个雷之外的所有雷都找…

C语言 | Leetcode C语言题解之第514题自由之路

题目&#xff1a; 题解&#xff1a; int findRotateSteps(char* ring, char* key) {int n strlen(ring), m strlen(key);int pos[26][n], posSize[26];memset(posSize, 0, sizeof(posSize));for (int i 0; i < n; i) {int x ring[i] - a;pos[x][posSize[x]] i;}int dp…

H3C vlan和trunk配置

vlan和trunk配置实验 实验拓扑图 实验需求 1.配置pc的IP地址 2.在sw1和sw2上分别创建vlan10和vlan20&#xff0c;要求pc3和pc5输入vlan10&#xff0c;pc4和pc6属于vlan20 3.sw1和sw2相连的接口配置为trunk类型&#xff0c;运行vlan10和vlan20通过 4.测试效果&#xff0c;同…

Springboot整合原生ES依赖

前言 Springboot整合依赖大概有三种方式&#xff1a; es原生依赖&#xff1a;elasticsearch-rest-high-level-clientSpring Data ElasticsearchEasy-es 三者的区别 1. Elasticsearch Rest High Level Client 简介: 这是官方提供的 Elasticsearch 客户端&#xff0c;支持…