从今天开始来学习如何在 ASP.NET Core 中构建 web API 以及每项功能的最佳适用场景. 关于此次示例的数据库创建请参考《学习 ASP.NET Core Razor 编程系列一》 至 《学习 ASP.NET Core Razor 编程系列十九 -- 分页》
一, 概述
本教程将创建以下 Web API:
API | 说明 | 请求正文 | 响应正文 |
GET /api/Book | 获取所有的书籍信息 | None | 书籍的数组 |
GET /api/Book/{id} | 通过 ID 获取书籍信息 | None | 书籍信息 |
POST /api/Book | 添加书籍信息 | 书籍信息 | 书籍信息 |
PUT /api/Book/{id} | 根据 ID 更新现有书籍信息 | 书籍信息 | None |
DELETE /api/Book/{id} | 根据 ID 删除书籍 | None | None |
下图显示了这次我们所要创建的应用的设计.
二, 创建 Web API 项目
1) 我们打开 Visual Studio 2017, 在菜单中选择 "文件" 菜单, 然后选择 "新建"> "项目".
2) 选择 "ASP.NET Core Web 应用程序" 模板. 将项目命名为 BookApi, 然后单击 "确定". 如下图.
3) 在 "新建 ASP.NET Core Web 应用程序 - BookApi" 对话框中, 选择 ASP.NET Core 版本. 选择 "API" 模板, 然后单击 "确定". 请不要选择 "启用 Docker 支持" 与 "为 HTTPS 配置". 如下图.
三, 测试 API
现在我们已经创建了 BookApi 应用项目. ASP.NET Core MVC 项目模板会在我们新创建的 BookApi 项目中默认创建一个 WebAPI-- values API.
在 Visual Studio 2017 中按 F5 运行应用程序. 然后启动浏览器, 并在浏览器地址栏中输入 http://localhost:5000/API/values, 浏览器会调用 Get 方法进行测试, 返回如下图的 JSON, 则证明我们的应用创建成功.
四, 添加实体类
实体是一组表示应用管理的数据的类. 我们这次使用单个 Book 类, 接下来我们来创建这个 Book 类.
1) 在 Visual Studio 2017 的 "解决方案资源管理器" 中, 右键单击项目. 选择 "添加"> "新建文件夹". 如下图.
2) 将文件夹命名为 "Models".
3) 右键单击 "Models" 文件夹, 然后选择 "添加"> "类". 将类命名为 Book, 然后选择 "添加". 如下图.
4) 在 Visual Studio 2017 的 "解决方案资源管理器" 中打开我们刚才创建的 Book.cs 文件, 并输入以下代码:
- using System;
- using System.Collections.Generic;
- using System.ComponentModel.DataAnnotations;
- using System.Linq;
- using System.Threading.Tasks;
- namespace BookApi.Models
- {
- public class Book
- {
- public int ID { get; set; }
- [Required]
- [StringLength(50, MinimumLength = 2)]
- public string Name { get; set; }
- [Display(Name = "出版日期")]
- [DataType(DataType.Date)]
- public DateTime ReleaseDate { get; set; }
- [Range(1, 200)]
- [DataType(DataType.Currency)]
- public decimal Price { get; set; }
- public string Author { get; set; }
- [Required]
- public string Publishing { get; set; }
- [Timestamp]
- public byte[] RowVersion { get; set; }
- }
- }
Id 属性用作关系数据库中的唯一键.
实体类可位于项目的任意位置, 但按照惯例会使用 Models 文件夹.
五, 数据表创建脚本
我在这里直接给出 Book 表的创建脚本, 代码如下.
- CREATE TABLE [dbo].[Book](
- [ID] [int] IDENTITY(1,1) NOT NULL,
- [Author] [nvarchar](max) NULL,
- [Name] [nvarchar](50) NOT NULL,
- [Price] [decimal](18, 2) NOT NULL,
- [ReleaseDate] [datetime2](7) NOT NULL,
- [Publishing] [nvarchar](max) NOT NULL,
- [RowVersion] [timestamp] NULL,
- CONSTRAINT [PK_Book] PRIMARY KEY CLUSTERED
- (
- [ID] ASC
- )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
- ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
来源: https://www.cnblogs.com/chillsrc/p/10614598.html