zoukankan      html  css  js  c++  java
  • 第一节 简单的webapi接口(aspnetcore)

    第一节-简单的webapi接

    开发环境

    Visual Studio 2019
    .net core 3.0

    打开vs2019新建项目

    具体步骤如下图:

    第一步创建新项目
    第二步选择ASP.NET Core Web应用程序然后下一步
    第三步配置新项目然后点创建

    此处我们选择API(新手不推荐选择空项目,选择API系统会为我们自动创建WebApi需要的一些配置文件等),Https配置这一项我们暂时不勾选,目前我们不配置Https。

     
    第四步创建新的ASP.Net Core Web 应用程序


    点创建以后的界面如下图:

     
    XXX webapi

    运行项目

    F5运行项目,然后就可以看到微软为我们写好的一个天气预报示例webapi了,这里只有一个Get请求示例,返回值为json格式。

     
    天气预报webapi示例

    Startup.cs说明

    注意:services.AddControllers();和 endpoints.MapControllers(); 方法成对出现, 这是.net core3.0中的最新写法

    ConfigureServices方法
    用来向容器中注册服务,注册好的服务可以在其他地方进行调用.

    Configure方法
    用来配置中间件管道,即如何响应http请求.

     

    创建第一个Controller

    1 右键删除系统默认创建的WeatherForecastController.csWeatherForecast.cs
    2 新建一个控制器,命名:UserController.cs

     
    新建UserController 01
     
    新建UserController 02
     
    新建UserController 03


    新建以后如下图:

     
    UserController


    注:我们打开项目依赖项,可以看到系统默认给我们增加了EntiyFrameworkCore的引用,由此就可以看出微软也在大力推广EF的使用了。

     
    image.png


    回归正题,我们在UserController中增加一个Loginget方式的接口方法,返回一个hello,我们打算通过请求api/User/Login来得到这个hello,F5运行程序

    namespace XXX.api.Controllers
    {
        [Route("api/[controller]")]
        [ApiController]
        public class UserController : ControllerBase
        {
            [HttpGet]
            public IActionResult Login()
            {
                return Ok("hello");
            }
        }
    }
    

    问题来了,为啥直接给打开weatherforecast,而且还404了,别急,往下看。

     
    404了

    在项目Properties中打开launchsettings.json

    launchsettings.json

    修改launchsettings.json,我们删掉了关于IIS相关的内容(让webapi不通过IIS来加载),然后修改了lauchUrl属性,如下:

    {
      "profiles": {
        "XXX.api": {
          "commandName": "Project",
          "launchBrowser": true,
          "launchUrl": "api/User/Login",
          "applicationUrl": "http://localhost:5000/",
          "environmentVariables": {
            "ASPNETCORE_ENVIRONMENT": "Development"
          }
        }
      }
    }
    

    (┬_┬)怎么还是404?别急继续往下看

     
    依然404


    因为我们是要通过api/User/Login来得到这个hello,所以我们要在UserController里定义一个action的动作,这样才能通过api/User/Login来得到这个hello,如下图新增action

     


    F5运行结果如下:

     
    运行结果

    增加全局路由

    上面增加action虽然能达到想要的结果,但是每次新建一个Controller都有写个action万一要是忘记了又要忙乎半天,有没有一劳永逸的办法呢?
    继续往下看:
    1.首先去掉Controller里的RouteApiController

     
    1

    2.修改Startup.cs,增加路由模版:

     
    配置路由

    感觉每次还是删除两段代码还是有点麻烦,虽然麻烦,但是用全局路由可以方便后期更改,万一老板不想通过api/xxx/xxx的方式来访问接口,想通过api2/xxx/xxx的方式访问,此时你只需要修改下Startup.cs即可。

    今天就介绍到这里,后续会继续更新,如需要源代码的请联系本人,加微信号:18700482809

    详细教程

    教程1 简单的webapi接口

    教程2 通过EF访问数据库

    教程3 增加接口文档

    教程4 读取appsettings.json配置类

    教程5 增加接口参数签名验证

    教程6 增加接口异常处理模块

     

     

  • 相关阅读:
    【LeetCode每天一题】Symmetric Tree(对称树)
    【LeetCode每天一题】Same Tree(相同的树)
    【Go】并发
    【LeetCode每天一题】Validate Binary Search Tree(有效的二叉搜索树)
    【LeetCode每天一题】 Unique Binary Search Trees(唯一二叉搜索树)
    【LeetCode每天一题】Binary Tree Inorder Traversal(二叉树的中序遍历)
    【LeetCode每天一题】Reverse Linked List II(旋转链表II)
    【LeetCode每天一题】Subsets II(子集合II)
    【LeetCode每天一题】Partition List(分区链表)
    【Go】面向对象
  • 原文地址:https://www.cnblogs.com/zxtceq/p/14119676.html
Copyright © 2011-2022 走看看