使用 ASP.NET Core 创建 Web API系列

使用 ASP.NET Core 创建 Web API

此次主要介绍使用 ASP.NET Core 构建 Web API 的基础知识。

在本教程中,你将了解:

  • 创建 Web API 项目。
  • 添加模型类和数据库上下文。
  • 使用 CRUD 方法构建控制器。
  • 配置路由、URL 路径和返回值。
  • 使用 Postman 调用 Web API。

概述本教程将创建以下 API:

API

说明

请求正文

响应正文

GET /api/TodoItems

获取所有待办事项

待办事项的数组

GET /api/TodoItems/{id}

按 ID 获取项

待办事项

POST /api/TodoItems

添加新项

待办事项

待办事项

PUT /api/TodoItems/{id}

更新现有项  

待办事项

DELETE /api/TodoItems/{id}    

删除项   

创建 Web 项目

从“文件”菜单中选择“新建”>“项目” 。

选择“ASP.NET Core Web 应用程序”模板,再单击“下一步” 。

将项目命名为 TodoApi,然后单击“创建” 。

在“创建新的 ASP.NET Core Web 应用程序”对话框中,确认选择“.NET Core”和“ASP.NET Core 3.1” 。 选择“API”模板,然后单击“创建” 。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3ViYW5nYmFuZzE=,size_16,color_FFFFFF,t_70

 

添加模型类

模型 是一组表示应用管理的数据的类。 此应用的模型是单个 TodoItem 类。

  1. 在“解决方案资源管理器” 中,右键单击项目。 选择“添加” > “新建文件夹” 。 将文件夹命名为“Models” 。
  2. 右键单击“Models” 文件夹,然后选择“添加” > “类” 。 将类命名为 TodoItem,然后选择“添加” 。
  3. 将模板代码替换为以下代码:

构建控制器

  • 右键单击 Controllers 文件夹。
  • 选择“添加”>“新建构建项” 。
  • 选择“其操作使用实体框架的 API 控制器”,然后选择“添加” 

检查 PostTodoItem create 方法

替换 PostTodoItem 中的返回语句,以使用 nameof 运算符:

 [Route("api/posttodoitem")]
    [ApiController]
    public class PostTodoItemController : ControllerBase
    {
        public static List<TodoItem> todoItems = new List<TodoItem>() {
            new TodoItem{Id=1,IsComplete=true,Name="张艺兴" },
            new TodoItem{Id=2,IsComplete=true,Name="郑凯" },
            new TodoItem{Id=3,IsComplete=true,Name="杨颖" },
            new TodoItem{Id=4,IsComplete=true,Name="陈赫" },
            new TodoItem{Id=5,IsComplete=true,Name="李晨" },
        };

       [HttpPost]
        public async Task<ActionResult<TodoItem>> PostTodoItem(TodoItem todoItem)
        {

            todoItems.Add(todoItem);

            return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
           // return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
           
        }
        [HttpGet]
        public async Task<ActionResult<List<TodoItem>>> TodoItems()
        {



            return  await Task.Run(() => todoItems);
            // return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);

        }

        [HttpGet("{id}")]
        public async Task<ActionResult<TodoItem>>GetTodoItem(int id)
        {

            var todoItem = await Task.Run(() => todoItems.Where(x => x.Id == id)); ;

            if (todoItem == null)
            {
                return NotFound();
            }

            return todoItem.FirstOrDefault();

        }
    }

安装 Postman

本教程使用 Postman 测试 Web API。

  • 安装 Postman
  • 启动 Web 应用\(在测试时,可在项目的文件夹下,运行  cmd  
  • 输入:dotnet  watch  run )

例如项目位置为:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3ViYW5nYmFuZzE=,size_16,color_FFFFFF,t_70

打开Cmd

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3ViYW5nYmFuZzE=,size_16,color_FFFFFF,t_70

 

  • 启动 Postman。
  • 禁用 SSL 证书验证
  • 在“文件”>“设置”(“常规”选项卡)中,禁用“SSL 证书验证” 

通过 Postman 测试 PostTodoItem

  • 创建新请求。
  • 将 HTTP 方法设置为 POST
  • 选择“正文”选项卡 。
  • 选择“原始”单选按钮 。
  • 将类型设置为 JSON (application/json)
  • 在请求正文中,输入待办事项的 JSON:
{

Id:5

  "name":"walk dog",

  "isComplete":true

}

选择Send

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3ViYW5nYmFuZzE=,size_16,color_FFFFFF,t_70

 

测试位置标头 URI

  • Headers 窗格中选择Response 选项卡。
  • 复制Location 标头值:
  • watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3ViYW5nYmFuZzE=,size_16,color_FFFFFF,t_70

 

  • 将方法设置为“GET”。
  • 粘贴 URI(例如,http://localhost:52655/api/posttodoitem/6)。
  • 选择Send

 

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3ViYW5nYmFuZzE=,size_16,color_FFFFFF,t_70

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值