C# ASP.NET Web Core API (.NET 6.0)

目录

一、简介

二、创建项目

三、启动项目

四、开放访问权限

五、添加其他的API

结束


一、简介

ASP.NET Core Web API 是 ASP.NET Core MVC 的一个功能。ASP.NET Core MVC 包含了对 Web API 的支持。可以构建多种客户端的 HTTP 服务。ASP.NET Core Web API可用于在 .NET Core 上构建 RESTful 应用程序。

框架包含对 HTTP 内容协商的支持,内置支持以 JSON 或 XML 格式化的数据。编写自定义格式化程序已添加对自有格式的支持。

使用链接生成对超媒体的支持。启用对跨资源共享(CORS)的支持,以便 Web API 可以在多个 Web应用程序之间共享。

我还写过 ASP.NET Web Core API (.NET 5.0) 的帖子,有需要的可以参考参考

C# ASP.NET Web Core API (.NET 5.0)_熊思宇的博客-CSDN博客

二、创建项目

 新建一个 ASP.NET Web Core API 项目

这里输入项目的名称

选择.NET 6.0 ,点击创建

创建完成后会有一个默认的接口

代码如下

using Microsoft.AspNetCore.Mvc;

namespace WebAPI_Net6.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 = DateTime.Now.AddDays(index),
                TemperatureC = Random.Shared.Next(-20, 55),
                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
            })
            .ToArray();
        }
    }
}

三、启动项目

在这里可以看到对应的配置

点击运行按钮,会自动在浏览器中打开一个页面

点击 页面中的 Get 按钮,就可以看到服务器返回对于的json数据

在上面的图片中我们可以看到,当前打开的端口号是7149

在浏览器中,新建一个选项卡,输入下面地址 

https://localhost:7149/WeatherForecast

就会获取对于接口的返回数据

四、开放访问权限

在执行这步操作之前,先获取自己的局域网IP

 然后,将刚刚测试的 localhost 改为你本机的IP地址和端口号

地址:http://192.168.2.107:7149/WeatherForecast

这时候会发现,用自己的局域网IP地址根本无法访问,这就意味这,其他的电脑同样也无法访问

解决方法:

打开 launchSettings.json,内容如下

{
  "$schema": "https://json.schemastore.org/launchsettings.json",
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:33248",
      "sslPort": 44349
    }
  },
  "profiles": {
    "WebAPI_Net6": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "launchUrl": "swagger",
      "applicationUrl": "https://localhost:7149;http://localhost:5149",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "swagger",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

将 profiles  中 applicationUrl  改为 "http://0.0.0.0:5000",

将项目重新生成,再次运行,这次可能会出现,不会再自动打开网页了,没关系,不用管它,

现在继续刷新这个网页,就会发现,服务器返回数据了,

图中的链接:http://192.168.2.107:5000/WeatherForecast

这样就完成了项目基本的功能了,不过,这只能在你本机上使用,要想局域网其他的电脑能访问这个接口,必须像和配置公网服务器一样,关闭防火墙才行。

五、添加其他的API

鼠标右键点击 Controllers 文件夹,选择 添加 --> 控制器

点击API,选择 包含读/写的API控制器

这里由于只是演示,就用默认的名字好了

添加完成后,项目结构如下

ValuesController 代码如下

using Microsoft.AspNetCore.Mvc;

// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860

namespace WebAPI_Net6.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        // GET: api/<ValuesController>
        [HttpGet]
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/<ValuesController>/5
        [HttpGet("{id}")]
        public string Get(int id)
        {
            return "value";
        }

        // POST api/<ValuesController>
        [HttpPost]
        public void Post([FromBody] string value)
        {
        }

        // PUT api/<ValuesController>/5
        [HttpPut("{id}")]
        public void Put(int id, [FromBody] string value)
        {
        }

        // DELETE api/<ValuesController>/5
        [HttpDelete("{id}")]
        public void Delete(int id)
        {
        }
    }
}

注意这里,在类的特性上,仔细看是有区别的,刚刚创建的 ValuesController 前面多了一个 api 字符串。

WeatherForecastController 的特性

ValuesController 的特性

这也就意味着,访问的接口也不一样。

在之前的操作中,我们都是用的浏览器去获取这些接口,虽然浏览器可以访问这些接口,但是不是特别的方便,建议各位使用一个专业的软件去测试,比如: Postman

图片中的地址:http://192.168.2.107:5000/api/Values

Get 测试

可以看到,这样就返回了对应的结果了,在各种接口中,根据需求去实现这些功能,如果出现了问题,就断点调试。

另一个,在默认的写法中,只能使用 Params 方式去请求,假设要把参数放到 Body 中,那么接口就要换其他的写法了。

比如,我们要接收 Body 中的参数,可以这么写

using Microsoft.AspNetCore.Mvc;

namespace ProductionSchedulingWebAPI.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        // GET: api/<ValuesController>
        [HttpGet]
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        [HttpPost("GetScheduling")]
        public string GetScheduling([FromForm] Parameter parameter)
        {
            Console.WriteLine(parameter.json);

            return "hello, good afternoon";
        }
    }
}

 结构体 Parameter 类

public class Parameter
{
    public string? json { get; set; } 
}

调用的方式也不一样,这里选择 form-data 和 x-www-form-urlencoded 都是可以的

接口地址:http://192.168.71.88:5276/api/Values/GetScheduling

接收数据这里选择 Pretty ,就可以看到返回的字符串

更多的写法可以参考下面的教程,这里面会有更多的参考例子C# ASP.NET Core Web Api 与 MVC 模式下 body 参数传递,post 参数方式 - HiCSharp

在上面的案例中,用了一个实体类接收数据,框架在获取的时候自动给这个实体类赋值了,但如果接收的是一个 Json ,可以使用下面的方法,效果是一样的

using Microsoft.AspNetCore.Mvc;

namespace ProductionSchedulingWebAPI.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        // GET: api/<ValuesController>
        [HttpGet]
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        [HttpPost]
        public string Post([FromForm] string json)
        {
            Console.WriteLine(json);

            return "hello, good afternoon";
        }
    }
}

结束

如果这个帖子对你有帮助,欢迎 关注 + 点赞 + 留言,您的支持是我创作的最大动力。

end

### 回答1: ASP.NET Core Web API 是一种用于构建 Web API 的框架。它是微软开发的一个开源框架,旨在提供高性能、可扩展性和可靠性,支持跨平台开发,并且易于使用。 ASP.NET Core Web API 基于 .NET Core 平台,可以运行在 Windows、Linux 和 macOS 等多个操作系统上。它支持使用 C# 或者其他 .NET 支持的语言进行开发,并且提供了许多开箱即用的功能,如模型绑定、身份验证、授权、路由等等。 使用 ASP.NET Core Web API,你可以构建 RESTful API,支持多种数据格式,如 JSON、XML 等等。你还可以轻松地集成其他框架和工具,如 Swagger、Entity Framework Core、SignalR 等等。 总之,ASP.NET Core Web API 是一个功能强大、灵活、易于使用的框架,非常适合构建 Web API。 ### 回答2: ASP.NET Core Web API 是微软推出的一种服务器端的轻量级框架,用于构建基于 RESTful 的 Web API。该框架建立在 .NET Core 上,并具有很好的可扩展性和灵活性,可适用于跨平台开发ASP.NET Core Web API 的主要特点包括: 1. 开箱即用的依赖注入:该框架提供了一个内置的依赖注入容器,使得 DI 可以轻松地集成到 Web API开发中。 2. 轻量级:由于底层是使用 .NET Core 构建的,因此 ASP.NET Core Web API 框架非常灵活、快速、轻量级,并且能够满足高并发访问的需求。 3. 跨平台支持:ASP.NET Core Web API 是跨平台的,可以运行在 Windows、Linux 和 macOS 等操作系统上。 4. 开放式标准:该框架遵循开放式的标准,并支持多种数据格式、服务器框架和插件。 5. 网络安全:ASP.NET Core Web API 提供了多种安全功能,包括认证、授权和加密等,以保护 Web 应用程序免受网络攻击。 总之,ASP.NET Core Web API 框架是一个方便、快捷、灵活和高性能的框架,适用于构建任何规模的 Web API 应用程序。与此同时,该框架还提供了良好的文档和社区支持,愿意学习的开发者可以通过微软的官方文档和各种社区论坛,快速上手并掌握该框架的使用。 ### 回答3: ASP.NET Core Web API是一个开放源代码跨平台的Web框架,用于开发基于HTTP协议的RESTful服务,并支持各种客户端,包括Web界面及流行语言开发的客户端应用程序。其已经成为目前.NET生态系统中最重要的发展方向之一。 相比于传统的.NET框架,ASP.NET Core Web API具有以下几个优点: 1. 跨平台:在Linux、Mac、Windows等平台上都可以运行,且不必担心所使用的系统版本问题; 2. 高性能:ASP.NET Core Web API在响应请求方面有极佳的性能,对于高并发访问的场景有着不错的表现; 3. 轻量级:ASP.NET Core Web API具有比传统的.NET框架更轻量级的特点,其运行时占用的硬盘空间和内存资源更少; 4. 便于部署:用Docker等虚拟化容器将应用打包后部署非常简单,不需要过多的配置,适用于现代化的云端应用场景。 在开发方面,ASP.NET Core Web API提供了丰富的工具和库,使Web API开发效率更高,且可用于多种类型的Web应用程序,例如单页应用程序、移动客户端、大型企业软件等。通过使用ASP.NET Core Web API开发人员可以轻松创建高效稳定的Web服务和RESTful APIs。 总之,ASP.NET Core Web API是一个反应迅速、易于扩展的开发框架,不仅能够加速Web应用程序的开发工作,更能够提供高性能的Web服务,从而大大提升用户体验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊思宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值