這里我以自己創建一個個人信息的model為例,在前端使用table來展示人員信息。
后端:
首先創建一個.netcore的項目(我目前版本是.netcore5),在解決方案中(Controllers同級)添加一個Models的文件夾用來存放人員信息的類。
1 public class EmployeeInfo 2 { 3 public int EmployeeNo { get; set; } 4 public string EmployeeName { get; set; } 5 public int Age { get; set; } 6 public int Sex { get; set; } 7 public string Position { get; set; } 8 public bool IsActive { get; set; } = false; 9 public DateTime CreateDate { get; set; } = DateTime.Now; 10 }
在控制器Controllers中創建一個EmployeeInfoController的包含讀寫操作API控制器。
加入人員信息:
1 private List<EmployeeInfo> employeeInfos = new List<EmployeeInfo> 2 { 3 new EmployeeInfo{ 4 EmployeeNo = 1, 5 EmployeeName = "Jack", 6 Age = 21, 7 Sex = 1, 8 Position = "Front-end Development", 9 }, 10 new EmployeeInfo{ 11 EmployeeNo = 2, 12 EmployeeName = "Tom", 13 Age = 23, 14 Sex = 0, 15 Position = "Front-end Development", 16 }, 17 new EmployeeInfo{ 18 EmployeeNo = 3, 19 EmployeeName = "Martin", 20 Age = 22, 21 Sex = 1, 22 Position = ".Net Development", 23 }, 24 };
修改獲取數據(Get)的方法:
1 [HttpGet] 2 public IEnumerable<EmployeeInfo> Get() 3 { 4 return employeeInfos; 5 }
允許跨域的配置:
找到Startup.cs這個文件,這里我在外面定義一個變量來存。
1 readonly string AllowRequestOrigins = "_allowRequestOrigins";
然后找到ConfigureServices這個方法,添加一個允許訪問的域
1 services.AddCors(options => 2 { 3 options.AddPolicy(AllowRequestOrigins, builder => 4 { 5 //允許訪問該api的域 6 builder.WithOrigins("http://localhost:8080").AllowAnyHeader().AllowAnyMethod(); 7 }); 8 });
最后在Configure配置中使用這個允許跨域的變量,記得加在app.UseRouting();和app.UseEndpoints()之間。
1 app.UseCors(AllowRequestOrigins);
以上后端配置都已經完成,接下來允許項目看看是否能夠正確生成數據。
可以看到我的api接口為http://localhost:61475/api/EmployeeInfo,數據都能正常顯示,那么接下來我在前端使用axios來訪問這個接口。看是否能夠正確請求到這個接口。
前端:
ui部分
1 <template> 2 <el-row> 3 <el-col> 4 <el-table :data="datalist"> 5 <el-table-column prop="employeeNo" label="Employee No"></el-table-column> 6 <el-table-column prop="employeeName" label="Employee Name"></el-table-column> 7 <el-table-column prop="age" label="Age"></el-table-column> 8 <el-table-column prop="sex" label="Sex"></el-table-column> 9 <el-table-column prop="position" label="Position"></el-table-column> 10 <el-table-column prop="createDate" label="Create Date"></el-table-column> 11 <el-table-column prop="isActive" label="Is Active"></el-table-column> 12 </el-table> 13 </el-col> 14 </el-row> 15 </template>
JS部分
1 export default { 2 data() { 3 return { 4 datalist: [], 5 }; 6 }, 7 8 mounted() { 9 let _self = this; 10 _self 11 .$axios({ 12 method: "get", 13 url: "http://localhost:61475/api/EmployeeInfo", 14 }) 15 .then((response) => { 16 let data = response.data; 17 for (let item of data) { 18 item.sex = item.sex === 1 ? "man" : "woman"; 19 item.isActive = item.isActive ? "yes" : "no"; 20 item.createDate = new Date(item.createDate).toLocaleDateString(); 21 } 22 _self.datalist = data; 23 }); 24 }, 25 };
運行后的效果可以看到數據都能正常顯示