.net core5 webapi + vue + axios 搭建一個跨域訪問的例子


這里我以自己創建一個個人信息的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 };

運行后的效果可以看到數據都能正常顯示

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM