NET Core & VS Code 之路(2) Web API

开发Core项目的条件

看到VS包的体积,以及不想往下走了.

幸亏,ms出了VS Code,可开发.NET Core项目.实际上记事本也能写Core代码,但是开发是需要调试的.

所以本系列将持续用VS Code开发.以代码为主,关键点会加以注释

由于公司事比较多,一直没来得及更新

目录

Web API

  • dotnet new 添加Core项目
  • project.json添加依赖
    • "Microsoft.AspNetCore.Server.Kestrel"

    • "Microsoft.AspNetCore.Mvc"

  • 添加Startup.cs
  • 添加ValuesController.cs
  • 修改Program.cs

project.json 添加的依赖

1
2
3
4
"dependencies": {
    "Microsoft.AspNetCore.Server.Kestrel""1.0.0"//webhost
    "Microsoft.AspNetCore.Mvc""1.0.0" //webapi mvc
}

  

添加的Startup.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
 
public class Startup
{
    public void Configure(IApplicationBuilder app)
    {
        app.UseMvc();//使用MVC管道
    }
 
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();//MVC加入到DI容器中
    }
}

添加的ValuesController.cs

1
2
3
4
5
6
7
8
9
10
11
using Microsoft.AspNetCore.Mvc;
 
public class ValuesController
{
    [HttpGet("/values/{name}")]//name参数注入
    public string Index(string name)
    {
        return "Hello World:" + name;
 
    }
}

修改的Program.cs

1
2
3
4
5
6
7
8
9
public static void Main(string[] args)
{
    new WebHostBuilder()
      .UseKestrel()
      .UseStartup<Startup>()
      .UseUrls("http://localhost:8899""http://localhost:9988/")//同时监听2个端口
      .Build()
      .Run();
}

MVC

在.NET Core中,MVC和Web API实际上走的同一个管道

本例子会在上面的Web API基础上修改

  • 添加和修改project.json

    • Microsoft.AspNetCore.Razor.Tools
  • 添加HomeController
  • 添加Index.cshtml
  • 修改Program.cs

MVC中因为有razor动态编译,所以不仅仅添加1个依赖即可

project.json修改的内容

1
2
3
4
5
6
7
8
9
10
11
12
13
"buildOptions": {
    "debugType""portable",
    "emitEntryPoint"true,
    "preserveCompilationContext"true //动态编译
},
"dependencies": {
    "Microsoft.AspNetCore.Server.Kestrel""1.0.0"//webhost
    "Microsoft.AspNetCore.Mvc""1.0.0"//webapi mvc
    "Microsoft.AspNetCore.Razor.Tools": { //mvc razor
        "version""1.0.0-preview2-final",
        "type""build"
    }
},

添加的HomeController.cs

注意:需要继承Controller类

1
2
3
4
5
6
7
8
9
10
11
using Microsoft.AspNetCore.Mvc;
 
public class HomeController : Controller
{
    [HttpGet("/{name}")]
    public IActionResult Index(string name)
    {
        ViewBag.Name = "Hello " + name;
        return View();
    }
}

  

添加Index.cshtml

目录结构和之前方式(ASP.NET MVC)一样

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>@ViewBag.Name</h1>
</body>
</html>

修改Program.cs

1
2
3
4
5
6
7
8
9
10
public static void Main(string[] args)
{
    new WebHostBuilder()
        .UseKestrel()
        .UseStartup<Startup>()
        .UseContentRoot(Directory.GetCurrentDirectory()) //mvc views需要
        .UseUrls("http://localhost:8899""http://localhost:9988/")//同时监听2个端口
        .Build()
        .Run();
}

静态文件

  • 添加依赖:project.json

    • Microsoft.AspNetCore.StaticFiles
  • 注册管道:Startup.cs
  • 添加静态文件:wwwroot

project.json

1
2
3
4
5
6
7
8
9
"dependencies": { //nuget包
    "Microsoft.AspNetCore.Mvc""1.0.0"//webapi mvc
    "Microsoft.AspNetCore.Server.Kestrel""1.0.0"//webhost
    "Microsoft.AspNetCore.Razor.Tools": { //mvc razor
        "version""1.0.0-preview2-final",
        "type""build"
    },
    "Microsoft.AspNetCore.StaticFiles""1.0.0"//静态文件
},

注册管道

1
2
3
4
5
public void Configure(IApplicationBuilder app)
{
    app.UseStaticFiles();//需要在mvc前 否则将优先被mvc路由匹配执行
    app.UseMvc();
}

添加静态文件

静态文件默认是以wwwroot文件夹为根目录

注意:

  • 添加依赖后,需要Restore后才能使用该库
  • 本节由于篇幅问题,去除了配置文件的大量说明
  • 本文地址:http://www.cnblogs.com/neverc/p/5801210.html

NET Core & VS Code 之路(2) Web API的更多相关文章

  1. [Core] .NET Core & VS Code 之路(2) Web API

    开发Core项目的条件 Visual Studio 2015 Update 3 .NET Core 1.0.0 - VS 2015 Tooling Preview 2 看到VS包的体积,以及不想往下走 ...

  2. [ASP.NET MVC 小牛之路]18 - Web API

    Web API 是ASP.NET平台新加的一个特性,它可以简单快速地创建Web服务为HTTP客户端提供API.Web API 使用的基础库是和一般的MVC框架一样的,但Web API并不是MVC框架的 ...

  3. .Net Core+Angular6 学习 第一部分(创建web api)

    . 创建.net core web api 1.1 选择一个empty 模式,里面只有简单的2个class 1.2 配置web api 的路由. 1.2.1 打开Startup.cs,首先引用conf ...

  4. 【转】asp.net Core 系列【二】—— 使用 ASP.NET Core 和 VS2017 for Windows 创建 Web API

    在本教程中,将生成用于管理“待办事项”列表的 Web API. 不会生成 UI. 概述 以下是将创建的 API: API 描述 请求正文 响应正文 GET /api/todo 获取所有待办事项 无 待 ...

  5. [Core] .NET Core & VS Code 之路(1) Hello World

    目录 相关链接 dotnet命令 VS Code Hello World Web Hello World 总结 其实本篇上个月已经写好, 只是 但是,不忘初心方得始终 相关链接 Learn .NET ...

  6. Asp.Net Core 3.0 学习3、Web Api 文件上传 Ajax请求以及跨域问题

    1.创建Api项目 我用的是VS2019 Core3.1 .打开Vs2019 创建Asp.Net Core Web应用程序命名CoreWebApi 创建选择API 在Controller文件夹下面添加 ...

  7. Asp.Net Core 3.1 学习3、Web Api 中基于JWT的token验证及Swagger使用

    1.初始JWT 1.1.JWT原理 JWT(JSON Web Token)是目前最流行的跨域身份验证解决方案,他的优势就在于服务器不用存token便于分布式开发,给APP提供数据用于前后端分离的项目. ...

  8. 【翻译】在Visual Studio中使用Asp.Net Core MVC创建你的第一个Web API应用(一)

    HTTP is not just for serving up web pages. It's also a powerful platform for building APIs that expo ...

  9. [转]【翻译】在Visual Studio中使用Asp.Net Core MVC创建你的第一个Web API应用(一)

    本文转自:https://www.cnblogs.com/inday/p/6288707.html HTTP is not just for serving up web pages. It’s al ...

随机推荐

  1. Apache安装完服务没有安装的情况

    安装完apache之后(不是按照默认路径安装的,例如是 D:\ )右下方哪个小羽毛图标是没有启动的,左键不好使,而且提示“No services installed”,提示服务器没有被安装.解决方法: ...

  2. Java---IO加强(1)

    RandomAccessFile ★随机访问文件,自身具备读写的方法. new RandomAccessFile()之后,若文件不存在会自动创建,存在则不创建.--该类其实内部既封装了字节输入流,又封 ...

  3. 《BackboneJS框架的技巧及模式》(2)

    <BackboneJS框架的技巧及模式>(2) 本文紧接第一部分:<BackboneJS框架的技巧及模式(1)> 作者:chszs,转载需注明.博客主页:http://blog ...

  4. 深入理解object C中复制对象的用法(一)

    第一.复制对象的基本概念 复制一个对象为副本,开辟一块新的内存来存储副本对象. 第二.如果一个对象想具备复制的功能,必须实现<NSCopying>协议和<NSMutableCopyi ...

  5. object- c 字符串操作

    Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能在动态的更改,除非重 ...

  6. Coding Your Life

    前几天看到篇文章,写的是科技让人变得陌生,balabala,总的说来就科技让邻居是男是女不知道了,朋友见面少了之类的.其实我觉得,也不能全怪科技发展的太快,而是人心都飘到网路上了,像我这一辈已经老去的 ...

  7. [转] boost::any的用法、优点和缺点以及源代码分析

    boost::any用法示例: #include <iostream> #include <list> #include <boost/any.hpp> typed ...

  8. Java基础知识强化97:final、finally、finally区别

    1. final修饰符(关键字)     如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此,一个类不能既被声明为abstract,又被声明为final.     将 ...

  9. jsp页面中定时的方法

    $(function(){ totaladd(); //定时时触发的函数 setInterval(totaladd,3000);//设置定时1000=1秒 }); function totaladd( ...

  10. OD: DEP - Ret2Libc via VirtualProtect() & VirtualAlloc()

    一,通过 VirutalProtect() 修改内存属性绕过 DEP DEP 的四种工作模式中,OptOut 和 AlwaysOn 下所有进程默认都开启 DEP 保护,这里如果一个程序自身需要从堆栈中 ...