使用ASP.NET Core 3.x 构建 RESTful API P6 状态和路由

使用ASP.NET Core 3.x 构建 RESTful API P6 状态和路由

.Net Core Web API 项目中,Controller 层是对外层,所以在 Controller 层之下的其它层(如:业务逻辑层,数据库访问层)是如何运作的,与 Controller层无关,所以针对业务结果,在 Controller 层对外表述的时候,我们需要根据也业务结果给出,具体的 HTTP 状态码.

分析一个 Action 方法,此 Action 存在于 CompaniesController.cs文件中.

/// <summary>
        /// 获取指定公司
        /// </summary>
        /// <param name="companyId">公司id</param>
        /// <returns></returns>
        [HttpGet("{companyId}")]   // URI Get api/Companies/{companyId}
        //[Route("{companyId}")]   //使用这种方式也能表示路由,但是不常用
        public async Task<IActionResult> GetCompany(Guid companyId)
        {
            //var exist = await _companyRepository.CompanyExistsAsync(companyId);
            //if (exist == false)
            //{
            //    return NotFound();
            //}
            
            //上面这种判断其实存在某种缺陷,那就是当前,我拿到了是存在的结果,但是在我拿到存在结果的同时,
            //另一个HTTP请求过来删除了我想要的公司资源,那么就会对下述的获取公司的业务逻辑产生影响,即会
            //出现并发问题,所以我们应该换成下面的这种形式更为保险一点.

            var company = await this._companyRepository.GetCompanyAsync(companyId);

            if (company == null)
            {
                return NotFound();   //404 NotFound
            }

            // 此处为什么我们要用Ok方法来返回结果,而不是用 new JsonResult(返回结果);  的方式来显式明确的
            // 返回Json数据呢,因为根据Http请求的要求,不一定要求返回的是Json数据,如果要求返回的是 XML呢?
            // 所以我们应该使用.Net Core 封装号的一些返回数据的方法,因为这些方法,可以根据请求,返回给消费者想要的
            // 数据格式的结果.

            return Ok(company);
        }

.Net Core 修改默认启动URI
我们修改项目下的launchSettings.json文件,添加"launchUrl": "api/companies"配置项,即表示启动时,默认URI是 网站地址/api/companies

{
  "profiles": {
    "Routine.Api": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "api/companies", 
      "applicationUrl": "http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

使用Postman进行调试

  1. 获取所有公司

使用ASP.NET Core 3.x 构建 RESTful API P6 状态和路由
获取所有公司信息

  1. 获取指定公司信息
    使用ASP.NET Core 3.x 构建 RESTful API P6 状态和路由

使用ASP.NET Core 3.x 构建 RESTful API P6 状态和路由

上一篇:C# 生成二维码 QRCoder


下一篇:C# Task详解