欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.Net Core WebApi的简单创建以及使用方法

程序员文章站 2022-09-04 13:44:59
前言 按照目前的软件开发发展趋势中,不管是前后端分离还是提供数据服务,webapi使用的越来越广泛,而且.net core也是我们.net开发人员未来发展的趋势,所以说学会使用.ne...

前言

按照目前的软件开发发展趋势中,不管是前后端分离还是提供数据服务,webapi使用的越来越广泛,而且.net core也是我们.net开发人员未来发展的趋势,所以说学会使用.net core api是非常有必要的。

本人作为一个.net菜鸟,正在慢慢的学习中,将学到的一步一步记录下来。

一、创建项目

打开vs2019,新建一个asp.net core web 应用程序。

.Net Core WebApi的简单创建以及使用方法

输入项目名、选择路径创建。

.Net Core WebApi的简单创建以及使用方法

选择.net core 我这里用的是.net core 2.2版本,选中api,把右边的选中取消。

.Net Core WebApi的简单创建以及使用方法

创建的项目目录内容如下。

.Net Core WebApi的简单创建以及使用方法

二、编辑控制器

打开controllers文件夹,这里我直接使用默认创建的valuescontroller控制器。(其实是因为这是个例子我懒的再建了( ̄. ̄))

.Net Core WebApi的简单创建以及使用方法

valuescontroller控制器默认内容如下。共有四个http方法,分别为 get、post、put 和 delete。

.Net Core WebApi的简单创建以及使用方法

把该控制器的内容重新写一下,将路由设置为api/控制器/方法(api/[controller]/[action])。按照常用get 和 post两个请求,写了两个get方法和一个post方法,一个参数类。

using system;
using system.collections.generic;
using system.linq;
using system.threading.tasks;
using microsoft.aspnetcore.mvc;

namespace firstapi.controllers
{
  //路由设置
  [route("api/[controller]/[action]")]
  [apicontroller]
  public class valuescontroller : controllerbase
  {
    /// <summary>
    /// 获取文本
    /// </summary>
    /// <returns></returns>
    [httpget]
    public actionresult<string> get()
    {
      return "hello world!";
    }
    /// <summary>
    /// 两数相加
    /// </summary>
    /// <param name="num1">第一个数</param>
    /// <param name="num2">第二个数</param>
    /// <returns></returns>
    [httpget]
    public actionresult<int> sum(int num1,int num2)
    {
      return num1 + num2;
    }
    /// <summary>
    /// 两数相减
    /// </summary>
    /// <param name="param">参数</param>
    /// <returns></returns>
    [httppost]
    public actionresult<int> subtract(param param)
    {
      int result = param.num1 - param.num2;
      return result;
    }
  }
  /// <summary>
  /// 参数
  /// </summary>
  public class param
  {
    /// <summary>
    /// 第一个数
    /// </summary>
    public int num1 { get; set; }
    /// <summary>
    /// 第二个数
    /// </summary>
    public int num2 { get; set; }
  }
}

然后右键项目→属性→调试,将启动浏览器默认指向为第一个get方法。

.Net Core WebApi的简单创建以及使用方法

.Net Core WebApi的简单创建以及使用方法

调试运行,访问第一个方法,返回结果。

.Net Core WebApi的简单创建以及使用方法

访问第二个方法加上参数,得到结果。

.Net Core WebApi的简单创建以及使用方法

第三个方法是post请求,无法直接输入,可以用其他方式实现。

三、搭建swagger

这样webapi 就简单实现了,不过这样不容易管理。为了更好的管理和测试我们的接口,我这里使用了swagger框架。

swagger是什么?swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化restful风格的 web 服务。

右键项目,点击管理nuget程序包。

.Net Core WebApi的简单创建以及使用方法

切换到浏览,搜索“swashbuckle.aspnetcore”,安装。

.Net Core WebApi的简单创建以及使用方法

安装完成之后,编辑startup.cs文件。

.Net Core WebApi的简单创建以及使用方法

引用下面三个命名空间。

using system;
using system.collections.generic;
using system.linq;
using system.threading.tasks;
using microsoft.aspnetcore.mvc;

namespace firstapi.controllers
{
  //路由设置
  [route("api/[controller]/[action]")]
  [apicontroller]
  public class valuescontroller : controllerbase
  {
    /// <summary>
    /// 获取文本
    /// </summary>
    /// <returns></returns>
    [httpget]
    public actionresult<string> get()
    {
      return "hello world!";
    }
    /// <summary>
    /// 两数相加
    /// </summary>
    /// <param name="num1">第一个数</param>
    /// <param name="num2">第二个数</param>
    /// <returns></returns>
    [httpget]
    public actionresult<int> sum(int num1,int num2)
    {
      return num1 + num2;
    }
    /// <summary>
    /// 两数相减
    /// </summary>
    /// <param name="param">参数</param>
    /// <returns></returns>
    [httppost]
    public actionresult<int> subtract(param param)
    {
      int result = param.num1 - param.num2;
      return result;
    }
  }
  /// <summary>
  /// 参数
  /// </summary>
  public class param
  {
    /// <summary>
    /// 第一个数
    /// </summary>
    public int num1 { get; set; }
    /// <summary>
    /// 第二个数
    /// </summary>
    public int num2 { get; set; }
  }
}

在configureservices方法里加入下面的代码,注册swagger生成器,定义一个文档,设置xml文档的注释路径,。

//配置swagger
//注册swagger生成器,定义一个swagger 文档
services.addswaggergen(c =>
{
  c.swaggerdoc("v1", new info
  {
    version = "v1",
    title = "接口文档",
    description = "restful api"
  });
  // 为 swagger 设置xml文档注释路径
  var xmlfile = $"{assembly.getexecutingassembly().getname().name}.xml";
  var xmlpath = path.combine(appcontext.basedirectory, xmlfile);
  c.includexmlcomments(xmlpath);
});

在configure方法里加入下面的代码,启用中间件服务使用生成swagger和swaggerui,将swaggerui中的routeprefix设为空字符串,这样就能在根节点(http://localhost:port)直接显示swaggerui界面。

//启用中间件服务生成swagger
app.useswagger();
//启用中间件服务生成swaggerui,指定swagger json终结点
app.useswaggerui(c =>
{
  c.swaggerendpoint("/swagger/v1/swagger.json", "web app v1");
  c.routeprefix = string.empty;//设置根节点访问
});

编辑后startup.cs完整代码如下。

using system;
using system.collections.generic;
using system.io;
using system.linq;
using system.reflection;
using system.threading.tasks;
using microsoft.aspnetcore.builder;
using microsoft.aspnetcore.hosting;
using microsoft.aspnetcore.mvc;
using microsoft.extensions.configuration;
using microsoft.extensions.dependencyinjection;
using microsoft.extensions.logging;
using microsoft.extensions.options;
using swashbuckle.aspnetcore.swagger;

namespace firstapi
{
  public class startup
  {
    public startup(iconfiguration configuration)
    {
      configuration = configuration;
    }

    public iconfiguration configuration { get; }

    // this method gets called by the runtime. use this method to add services to the container.
    public void configureservices(iservicecollection services)
    {
      services.addmvc().setcompatibilityversion(compatibilityversion.version_2_2);
      //配置swagger
      //注册swagger生成器,定义一个swagger 文档
      services.addswaggergen(c =>
      {
        c.swaggerdoc("v1", new info
        {
          version = "v1",
          title = "接口文档",
          description = "restful api"
        });
        // 为 swagger 设置xml文档注释路径
        var xmlfile = $"{assembly.getexecutingassembly().getname().name}.xml";
        var xmlpath = path.combine(appcontext.basedirectory, xmlfile);
        c.includexmlcomments(xmlpath);
      });
    }

    // this method gets called by the runtime. use this method to configure the http request pipeline.
    public void configure(iapplicationbuilder app, ihostingenvironment env)
    {
      if (env.isdevelopment())
      {
        app.usedeveloperexceptionpage();
      }
      //启用中间件服务生成swagger
      app.useswagger();
      //启用中间件服务生成swagger,指定swagger json终结点
      app.useswaggerui(c =>
      {
        c.swaggerendpoint("/swagger/v1/swagger.json", "web app v1");
        c.routeprefix = string.empty;//设置根节点访问
      });
      app.usemvc();
    }
  }
}

然后,右键项目,点击属性。

.Net Core WebApi的简单创建以及使用方法

选择生成,选择我们的debug路径。

.Net Core WebApi的简单创建以及使用方法

勾选xml文档文件,自动填充,然后会出现警告(非强迫症可以忽略警告)

.Net Core WebApi的简单创建以及使用方法

想要去掉警告,就在上面的取消显示警告中加入上面显示的1591,ctrl+s保存一下,警告就没了。

.Net Core WebApi的简单创建以及使用方法

然后点击调试,将启动浏览器后面url去掉。

.Net Core WebApi的简单创建以及使用方法

完成后,直接运行vs,就会进入文档ui页面了。

.Net Core WebApi的简单创建以及使用方法

四、使用swagger

我们打开第一个方法,点击try it out按钮。

.Net Core WebApi的简单创建以及使用方法

这个是无参的方法,直接点击execute执行。

.Net Core WebApi的简单创建以及使用方法

执行后可以看到response body返回的内容。

.Net Core WebApi的简单创建以及使用方法

点击第二个方法,给出两个参数,输入执行,得到返回结果。

.Net Core WebApi的简单创建以及使用方法

第三个方法的参数是model,要传递json格式的,默认已经生成好了,我们只需要编辑改一下值,再执行就行了。

.Net Core WebApi的简单创建以及使用方法

五、总结

到这里.net core api的简单搭建和使用就告一段落了,此篇学到了如何创建.net core api项目与怎么搭建swagger生成文档及使用,接下来我会继续学习和运用.net core api,并将其过程记录下来。本来想在这篇标题加个(一),但是想了想最近有可能更不了,等以后更了再加上吧。ㄟ( ▔, ▔ )ㄏ

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。