Net Core Web Api项目与在NginX下发布的方法

2020-03-17 14:02:19丽君

前言

本文将介绍Net Core的一些基础知识和如何NginX下发布Net Core的WebApi项目。

测试环境

操作系统:windows 10 开发工具:visualstudio 2019 框架:Net Core 3

Net Core WebApi项目创建

首先创建一个Net Core WebApi项目——CorePublishForNginX。

首先选择Asp.Net Core Web应用程序,如下图:

然后修改项目名称,如下图:

然后选择Api选项,如下图:

项目创建完成,如下图:

代码介绍

Controller

项目创建完成后,我们可以看到,里面内置了一个Api Controller——WeatherForecastController,代码如下:

[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]
  public IEnumerable<WeatherForecast> Get()
  {
    var rng = new Random();
    return Enumerable.Range(1, 5).Select(index => new WeatherForecast
    {
      Date = DateTime.Now.AddDays(index),
      TemperatureC = rng.Next(-20, 55),
      Summary = Summaries[rng.Next(Summaries.Length)]
    })
    .ToArray();
  }
}

如上述代码所示,首先我们看到该Controller继承的类是ControllerBase。(在NetFramework里继承的WebApi继承的是ApiController,Mvc继承的是Controller)

然后,我们发现Controller有一个构造函数,并且还有一个入参;我们知道Controller的调用是框架的内部机制,也就是说,框架在调用Controller时会给他一个入参。

通过名称我们可以发现,这个是一个日志入参,即,Core调用Controller时,为我们内置了一个日志记录对象。

这里我们不需要使用日志,所以可以先把这个构造函数删除。

接下来,我们看到了Api请求实现的主体,Get请求。

主体现的很简单,就是方法名用Get,然后方法头上加HttpGet特性。(Get方法名是可以修改的,因为一个WebApi里只支持一个Get请求,所以只要方法加了HttpGet特性,就会被视为默认的Get方法)

Get请求里实现了一个实体集合的组件,即请求该Controller会得到一个实体集合的数组。

Program

学习完Controller,我们进入Program.cs文件,我们做下简单的修改,设置一下Kestrel的启动端口。