• 使用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. 获取所有公司

    获取所有公司信息
    获取所有公司信息

    1. 获取指定公司信息
      获取指定公司信息
  • 相关阅读:
    CF553C Love Triangles
    CF875C National Property
    【UOJ #210】【UER #6】寻找罪犯
    ICPC南昌网络赛I题Yukino With Subinterval
    进阶式-日志打印-构建器模式
    Java 对象类型
    mqtt 消息重传
    Java 关键字 final 知识点巩固
    MQTT 5.0 新特性
    emqx 认证详细
  • 原文地址:https://www.cnblogs.com/HelloZyjS/p/12590092.html
Copyright © 2020-2023  润新知