当前位置:   article > 正文

C# ASP.NET Web Core API (.NET 6.0)_net6 api 开发

net6 api 开发

目录

一、简介

二、创建项目

三、启动项目

四、开放访问权限

五、添加其他的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 ,点击创建

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

代码如下

  1. using Microsoft.AspNetCore.Mvc;
  2. namespace WebAPI_Net6.Controllers
  3. {
  4. [ApiController]
  5. [Route("[controller]")]
  6. public class WeatherForecastController : ControllerBase
  7. {
  8. private static readonly string[] Summaries = new[]
  9. {
  10. "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
  11. };
  12. private readonly ILogger<WeatherForecastController> _logger;
  13. public WeatherForecastController(ILogger<WeatherForecastController> logger)
  14. {
  15. _logger = logger;
  16. }
  17. [HttpGet(Name = "GetWeatherForecast")]
  18. public IEnumerable<WeatherForecast> Get()
  19. {
  20. return Enumerable.Range(1, 5).Select(index => new WeatherForecast
  21. {
  22. Date = DateTime.Now.AddDays(index),
  23. TemperatureC = Random.Shared.Next(-20, 55),
  24. Summary = Summaries[Random.Shared.Next(Summaries.Length)]
  25. })
  26. .ToArray();
  27. }
  28. }
  29. }

三、启动项目

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

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

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

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

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

https://localhost:7149/WeatherForecast

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

四、开放访问权限

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

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

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

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

解决方法:

打开 launchSettings.json,内容如下

  1. {
  2. "$schema": "https://json.schemastore.org/launchsettings.json",
  3. "iisSettings": {
  4. "windowsAuthentication": false,
  5. "anonymousAuthentication": true,
  6. "iisExpress": {
  7. "applicationUrl": "http://localhost:33248",
  8. "sslPort": 44349
  9. }
  10. },
  11. "profiles": {
  12. "WebAPI_Net6": {
  13. "commandName": "Project",
  14. "dotnetRunMessages": true,
  15. "launchBrowser": true,
  16. "launchUrl": "swagger",
  17. "applicationUrl": "https://localhost:7149;http://localhost:5149",
  18. "environmentVariables": {
  19. "ASPNETCORE_ENVIRONMENT": "Development"
  20. }
  21. },
  22. "IIS Express": {
  23. "commandName": "IISExpress",
  24. "launchBrowser": true,
  25. "launchUrl": "swagger",
  26. "environmentVariables": {
  27. "ASPNETCORE_ENVIRONMENT": "Development"
  28. }
  29. }
  30. }
  31. }

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

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

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

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

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

五、添加其他的API

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

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

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

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

ValuesController 代码如下

  1. using Microsoft.AspNetCore.Mvc;
  2. // For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
  3. namespace WebAPI_Net6.Controllers
  4. {
  5. [Route("api/[controller]")]
  6. [ApiController]
  7. public class ValuesController : ControllerBase
  8. {
  9. // GET: api/<ValuesController>
  10. [HttpGet]
  11. public IEnumerable<string> Get()
  12. {
  13. return new string[] { "value1", "value2" };
  14. }
  15. // GET api/<ValuesController>/5
  16. [HttpGet("{id}")]
  17. public string Get(int id)
  18. {
  19. return "value";
  20. }
  21. // POST api/<ValuesController>
  22. [HttpPost]
  23. public void Post([FromBody] string value)
  24. {
  25. }
  26. // PUT api/<ValuesController>/5
  27. [HttpPut("{id}")]
  28. public void Put(int id, [FromBody] string value)
  29. {
  30. }
  31. // DELETE api/<ValuesController>/5
  32. [HttpDelete("{id}")]
  33. public void Delete(int id)
  34. {
  35. }
  36. }
  37. }

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

WeatherForecastController 的特性

ValuesController 的特性

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

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

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

Get 测试

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

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

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

  1. using Microsoft.AspNetCore.Mvc;
  2. namespace ProductionSchedulingWebAPI.Controllers
  3. {
  4. [Route("api/[controller]")]
  5. [ApiController]
  6. public class ValuesController : ControllerBase
  7. {
  8. // GET: api/<ValuesController>
  9. [HttpGet]
  10. public IEnumerable<string> Get()
  11. {
  12. return new string[] { "value1", "value2" };
  13. }
  14. [HttpPost("GetScheduling")]
  15. public string GetScheduling([FromForm] Parameter parameter)
  16. {
  17. Console.WriteLine(parameter.json);
  18. return "hello, good afternoon";
  19. }
  20. }
  21. }

 结构体 Parameter 类

  1. public class Parameter
  2. {
  3. public string? json { get; set; }
  4. }

调用的方式也不一样,这里选择 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 ,可以使用下面的方法,效果是一样的

  1. using Microsoft.AspNetCore.Mvc;
  2. namespace ProductionSchedulingWebAPI.Controllers
  3. {
  4. [Route("api/[controller]")]
  5. [ApiController]
  6. public class ValuesController : ControllerBase
  7. {
  8. // GET: api/<ValuesController>
  9. [HttpGet]
  10. public IEnumerable<string> Get()
  11. {
  12. return new string[] { "value1", "value2" };
  13. }
  14. [HttpPost]
  15. public string Post([FromForm] string json)
  16. {
  17. Console.WriteLine(json);
  18. return "hello, good afternoon";
  19. }
  20. }
  21. }

结束

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

end

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/586760
推荐阅读
相关标签
  

闽ICP备14008679号