zoukankan      html  css  js  c++  java
  • C# 创建可跨域访问的 RESTful 服务(Web API)

    1. 创建项目

    • VSCode 打开准备用来存放项目文件夹的文件夹;
    • VSCode 中打开终端,运行命令:
      dotnet new webapi -o HelloRestful

    2. 添加自定义逻辑

    • 在解决方案中(Controllers 同级)新建一个 Models 文件夹;
    • 在 Models 目录下新建 EmployeeInfo.cs 类,代码如下:
      using System;
      
      namespace HelloRestful.Controllers
      {
          public class EmployeeInfo
          {
              public int EmployeeNo { get; set; }
              public string EmployeeName { get; set; }
              public int Age { get; set; }
              public int Sex { get; set; }
              public string Position { get; set; }
              public bool IsActive { get; set; } = false;
              public DateTime CreateDate { get; set; } = DateTime.Now;
          }
      }
      View Code
    • 当对话框询问是否要将所需资产添加到项目时,选择“是”。
    • 在 Controllers 目录下新建 EmployeeInfoController.cs 类,代码如下:
      using System.Collections.Generic;
      using Microsoft.AspNetCore.Mvc;
      
      namespace HelloRestful.Controllers
      {
          [Route("api/[controller]")]
          [ApiController]
          public class EmployeeInfoController
          {
              private List<EmployeeInfo> employeeInfos = new List<EmployeeInfo>
              {
                  new EmployeeInfo{
                      EmployeeNo = 1,
                      EmployeeName = "Jack",
                      Age = 21,
                      Sex = 1,
                      Position = "Front-end Development",
                  },
                  new EmployeeInfo{
                      EmployeeNo = 2,
                      EmployeeName = "Tom",
                      Age = 23,
                      Sex = 0,
                      Position = "Front-end Development",
                  },
                  new EmployeeInfo{
                      EmployeeNo = 3,
                      EmployeeName = "Martin",
                      Age = 22,
                      Sex = 1,
                      Position = ".Net Development",
                  },
              };
      
              [HttpGet]
              public IEnumerable<EmployeeInfo> Get()
              {
                  return employeeInfos;
              }
          }
      }
      View Code

    3. 配置 IP 地址和 端口号

    • 打开 Properties/launchSettings.json 文件;
    • 在下图所示处修改 IP 地址和 端口号:

    4. 添加允许跨域配置

    • 打开 Startup.cs 文件;
    • 在 Startup 类中,添加如下变量(位置无所谓,推荐放在构造函数 Startup() ):
      readonly string AllowRequestOrigins = "_allowRequestOrigins";
    • Startup 类的 ConfigureServices() 方法中添加允许访问的域,代码如下:
      services.AddCors(options =>
                  {
                      options.AddPolicy(AllowRequestOrigins, builder =>
                      {
                          // 允许访问的域,可添加多个
                          builder.WithOrigins("http://localhost:9080").AllowAnyHeader().AllowAnyMethod();
                      });
                  });
      View Code
    • Startup 类的 Configure() 方法的 app.UseRouting(); 和 app.UseEndpoints(); 之间添加代码如下:
      app.UseCors(AllowRequestOrigins);

    5. 运行服务,并测试能否正确输出数据

    • VSCode 终端中运行命令:
      cd HelloRestful
      dotnet run

       回车,输出如下如所示:

       

    • 打开浏览器输入:http://172.22.113.93:10001/api/EmployeeInfo 显示如下:

      

     

     

    参考:教程:使用 ASP.NET Core 创建 Web API

       .Net Core5 WebAPI + Vue + Axios 搭建一个跨域访问的例子

       无法在 macOS 上启动 ASP.NET Core gRPC 应用

     

     

     

     

  • 相关阅读:
    移动端web app开发备忘
    HDU 5391-Zball in Tina Town(数论)
    LeetCode:Invert Binary Tree
    Mongo集群之主从复制
    Cocos2d-x--iOS平台lua加密成luac资源方法和Jsc文件&lt;MAC平台开发试用--windows平台暂未研究&gt;
    优秀程序猿因何而优秀?
    Java Exception和Error的差别
    【Android开发】之Fragment与Acitvity通信
    Draw the RGB data from kinect C++ via opengl
    使用Opencv2遇到error C2061: 语法错误: 标识符dest
  • 原文地址:https://www.cnblogs.com/dhqy/p/14097369.html
Copyright © 2011-2022 走看看