当前位置: 移动技术网 > IT编程>开发语言>.net > 使用 ASP.NET Core MVC 创建 Web API(二)

使用 ASP.NET Core MVC 创建 Web API(二)

2019年04月04日  | 移动技术网IT编程  | 我要评论

凌虐尤娜3,冰与火之歌 第七季 下载,四级真题

使用 asp.net core mvc 创建 web api

使用 asp.net core mvc 创建 web api(一)

 

 

六、添加数据库上下文

      数据库上下文是使用entity framework core功能的主类。 此类由 microsoft.entityframeworkcore.dbcontext 类派生而来。

    1) 在visual studio 2017的“解决方案资源管理器”中,右键单击“models”文件夹,然后选择“添加” > “类”。 将类命名为 bookcontext,然后单击“添加”。

     2) 在visual studio 2017的“解决方案资源管理器”中使用鼠标双击打开bookcontext.cs文件,并输入以下代码:

using microsoft.entityframeworkcore;
using system;
using system.collections.generic;
using system.linq;
using system.threading.tasks; 

namespace bookapi.models
{

    public class bookcontext: dbcontext
    {

        public bookcontext(dbcontextoptions<bookcontext> options)
               : base(options)
        {
        }

        public dbset<book> book { get; set; }     

    }
}

 

七、注册数据库上下文

     在 asp.net core 中,服务(如数据库上下文)必须向依赖关系注入 (di) 容器进行注册。该容器向控制器提供服务。

     在visual studio 2017中的“解决方案资源管理器”中找到 startup.cs文件,双击打开之后,添加将数据库上下文注入到di容器中的代码。代码如下。

using system;
using system.collections.generic;
using system.linq;
using system.threading.tasks;
using bookapi.models;
using microsoft.aspnetcore.builder;
using microsoft.aspnetcore.hosting;
using microsoft.aspnetcore.mvc;
using microsoft.entityframeworkcore;
using microsoft.extensions.configuration;
using microsoft.extensions.dependencyinjection;
using microsoft.extensions.logging;
using microsoft.extensions.options; 

namespace bookapi
{

    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.adddbcontext<bookcontext>(options =>   options.usesqlserver(configuration.getconnectionstring("bookcontext")));
            services.addmvc().setcompatibilityversion(compatibilityversion.version_2_2);
        }

        // 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();
            }
            app.usemvc();
        }
    }
}

 

八、添加数据库连接

      在visual studio 2017中的“解决方案资源管理器”中找到 appsettings.json文件,双击打开,然后添加数据库连接字符串。文件中的配置代码如下。

{
  "logging": {
    "loglevel": {
      "default": "warning"
    }
  },
  "connectionstrings": {
    "bookcontext": "server=.\\sqlexpress;database=customdb;trusted_connection=true;multipleactiveresultsets=true"
  },
  "allowedhosts": "*"
}

 

九、 添加控制器

    1) 在visual studio 2017中的“解决方案资源管理器”中右键单击 controllers 文件夹。在弹出菜单中选择 添加 > 新建项。如下图。

 

     2) 在“添加新项-bookapi”对话框中,选择“web”—>“api 控制器类”模板,并在“名称”输入框中输入 bookcontroller,然后选择“添加”按钮。如下图。

 

     3) 在visual studio 2017中打开bookcontroller.cs文件中添加以下代码:

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

// for more information on enabling web api for empty projects, visit https://go.microsoft.com/fwlink/?linkid=397860 

namespace bookapi.controllers
{

    [route("api/[controller]")]
    [apicontroller]
    public class bookcontroller : controller
    {

        private readonly bookcontext _context; 

        public bookcontroller(bookcontext context)
        {

            _context = context;

            if (_context.book.count() == 0)
            {

                context.book.addrange(
                 new book
                 {

                     name = "python编程 从入门到实践",
                     releasedate = datetime.parse("2018-1-12"),
                     author = "埃里克·马瑟斯",
                     price = 75.99m,
                     publishing = "机械出版社"
                 }, 

                 new book
                 {

                     name = "java编程的逻辑",
                     releasedate = datetime.parse("2018-1-13"),
                     author = "马俊昌",
                     price = 48.50m,
                     publishing = "机械出版社"
                 }, 

                 new book
                 {

                     name = "统计思维:大数据时代瞬间洞察因果的关键技能",
                     releasedate = datetime.parse("2017-12-23"),
                     author = "西内启",
                     price = 39.00m,
                     publishing = "清华出版社"
                 }, 

                 new book
                 {

                     name = "微信营销",
                     releasedate = datetime.parse("2018-01-05"),
                     author = "徐林海",
                     price = 36.90m,
                     publishing = "清华出版社"
                 },

                    new book
                    {

                        name = "java 8实战",
                        releasedate = datetime.parse("2016-04-05"),
                        author = "厄马",
                        price = 65.60m,
                        publishing = "科技出版社"
                    }
             );
                _context.savechanges();

            }
        }

    }
}

    对于上面的代码的说明:

       1) 定义了没有方法的 api 控制器类。

       2) 使用 [apicontroller] 属性修饰类。 此属性指示控制器响应 web api 请求。

       从 asp.net core 2.1 开始,使用 [apicontroller] 特性修饰控制器类时,将启用操作参数绑定源推理。复杂类型参数通过请求正文自动绑定。 因此,不会使用 [frombody] 特性对前面操作中的 book 参数进行显示批注。在 asp.net core 2.2 或更高版本中,可将 [apicontroller] 特性应用于程序集。 以这种方式进行注释,会将 web api 行为应用到程序集中的所有控制器。 请注意,无法针对单个控制器执行选择退出操作。

        [apicontroller] 特性通常结合 controller 来为控制器启用特定于 rest 行为。 通过 controllere 可使用notfound 和 file 等方法。

       另一种方法是创建使用 [apicontroller] 特性进行批注的自定义基本控制器类:

 [apicontroller]
public class mybasecontroller
{
}

        3)  使用 di 将数据库上下文 (bookcontext) 注入到控制器中。 数据库上下文将在控制器中的每个 crud 方法中使用。

        4) 如果数据库为空,则将几条书籍信息数据添加到数据库。 此代码位于构造函数中,因此在每次出现新 http 请求时运行。 如果删除所有项,则构造函数会在下次调用 api 方法时再次创建。 因此删除可能看上去不起作用,不过实际上确实有效。

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网