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. POJ 1502 MPI Maelstrom( Spfa, Floyd, Dijkstra)

    题目大意: 给你 1到n ,  n个计算机进行数据传输, 问从1为起点传输到所有点的最短时间是多少, 其实就是算 1 到所有点的时间中最长的那个点. 然后是数据 给你一个n 代表有n个点, 然后给你一 ...

  2. UVA 11389 The Bus Driver Problem

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82842#problem/D In a city there are n bus ...

  3. 《SDN核心技术剖析和实战指南》3.1控制器核心技术读书笔记

    在SDN的架构中,控制器可以说是SDN的核心,它负责对底层转发设备的控制以及向上层应用提供可编程性的北向接口.从实现上看,主要分三个层面来考虑,南向接口技术,北向接口技术以及东西向的可扩展性能力.下面 ...

  4. HTTP学习笔记7-消息报头

    41,消息报头-实体报头 请求和响应消息可以传送一个实体.一个实体由实体报头域和实体正文组成,在大多数情况下,实体正文就是请求消息中的请求正文或者响应消息中的响应正文.但是在发送时,并不是说实体报头域 ...

  5. tcp/ip状态图

    开启一个连接需要三次握手,终止一个tcp连接需要4次握手,对应的客户端和服务器连接状态也随之而改变. 1.服务器出现大量的CLOSE_WAIT? 通常,CLOSE_WAIT 状态在服务器停留时间很短, ...

  6. CTime,Systemtime的比较还有转换成日期格式。

    vc为我们提供了两种日期型的变量. 一种是CTime.他的缺点就是年份只支持到2038年,以后的日期就不支持啦,如果你的项目有20-30年的寿命,你就选择使用SYSTEMTIME.这个时间函数来进行比 ...

  7. [RxJS] Creation operators: from, fromArray, fromPromise

    The of() operator essentially converted a list of arguments to an Observable. Since arrays are often ...

  8. [Redux] Avoiding Array Mutations with concat(), slice(), and ...spread

    For Redux, you cannot use mutable methods like push, splice. Need to use immutable methods such as c ...

  9. word2vec浅析

    本文是參考神经网络语言模型.word2vec相关论文和网上博客等资料整理的学习笔记.仅记录 自己的学习历程,欢迎拍砖. word2vec是2013年google提出的一种神经网络的语言模型,通过神经网 ...

  10. Understanding AMQP, the protocol used by RabbitMQ--reference

    RabbitMQ is a lightweight, reliable, scalable and portable message broker. But unlike many message b ...