Asp.net core & Vue 第一个项目 - Go语言中文社区

Asp.net core & Vue 第一个项目


1. 创建Asp.net core WebAPI项目

Web Application包括WebAPI与MVC项目。在Asp.net Core中已经开始共用了。

使用最新版本2.2,创建API项目,至于Docker及Https暂时忽略即可。

 

2. 路由名称的作用

 

这个特性路由的Name字段用于标志一串路由地址。

需要根据名称获取路由地址的时候就方便多了。

 

3. Program启动类

 

云服务是一个趋势,Net core的重构也是为了拥抱Linux和Docker

所以,脱离图形界面,使用命令行托管,Program入口就很重要了。

namespace CoreBackend.Api
{
    public class Program
    {
        public static void Main(string[] args)
        {
            BuildWebHost(args).Run();
        }

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .Build();
    }
}

以上代码只是设置了程序入口,开始托管程序。UseStartUp用于加载Startup类中的配置。

 

4. startup配置类

 

这个类主要是涉及依赖的添加及使用,配置Asp.Net 处理管道。

  public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
        }

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            //判断是否是环境变量
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            //这个就是一个简单的中间件写法
            app.Run(async (context) =>
            {
                await context.Response.WriteAsync("Hello World!");
            });
        }
    }

核心就两个方法:ConfigureServices配置依赖,Configure配置管道。

最终的Startup的样子:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                // 在开发环境中,使用异常页面,这样可以暴露错误堆栈信息,所以不要放在生产环境。
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");
                // 在非开发环境中,使用HTTP严格安全传输(or HSTS) 对于保护web安全是非常重要的。
                // 强制实施 HTTPS 在 ASP.NET Core,配合 app.UseHttpsRedirection
                app.UseHsts();

            }

            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "ApiHelp V1");
                c.RoutePrefix = "";

            });

            app.UseAuthentication();


            //跨域第一种版本,请要ConfigureService中配置服务 services.AddCors();
            app.UseCors(options => options.WithOrigins("http://localhost:8021").AllowAnyHeader()
            .AllowAnyMethod()); 


            // 跳转https
            app.UseHttpsRedirection();
            // 使用静态文件
            app.UseStaticFiles();
            // 使用cookie
            app.UseCookiePolicy();
            // 返回错误码
            app.UseStatusCodePages();//把错误码返回前台,比如是404

            app.UseMvc();
        }

 

5. 使用MVC

 

在ConfigureServices中添加MVC中间件:

public void ConfigureServices(IServiceCollection services)
{
      services.AddMvc(); // 注册MVC到Container
}

在Configure中使用MVC:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseMvc();
}

 

6. 特性路由

 

在控制器上的特性路由相当于本控制器的全局路由,配置以后该控制器下的方法前缀都是这个配置。

上面注释掉的那个特性路由采用的是硬编码的方式,不利于扩展。使用[controller]会自动替换成控制器名称。

 

7. 基于注解的模型验证

这个ErrorMessage可以使用参数, {0}表示Display的Name属性, {1}表示当前注解的第一个变量, {2}表示当前注解的第二个变量.

 

ModelState是验证信息,isValid是验证通过。[FromBody]是自动从请求体绑定内容到DTO:

 

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/Day_and_Night_2017/article/details/91900421
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-04-19 11:14:35
  • 阅读 ( 1013 )
  • 分类:前端

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢