前情提要
接上篇文章,我们的应用已经创建完毕了,接下来我们编写几个自己的接口
快速开始
新增Controller
复制一份WeatherForecastController.cs,改名为CommonInfoController
设置Class名
将CommonInfoController中的复制过来的class名改成新名
新增数据类型
我们在WeatherForecast.cs文件中新增如下代码
public class CommonInfo
{
public DateOnly Date { get; set; }
public string? Text { get; set; }
}
新增接口
我们新增几个增删改查的测试接口,暂时先按静态数据返回,后续文章会详细介绍连接数据库查询相关内容接口编写逻辑。
编写接口代码
完整代码如下:
using Microsoft.AspNetCore.Mvc;
using static System.Runtime.InteropServices.JavaScript.JSType;
using System;
using System.Reflection;
namespace xiaojinWebApplication.Controllers
{
[ApiController]
[Route("[controller]")]
public class CommonInfoController : ControllerBase
{
private readonly ILogger<CommonInfoController> _logger;
public CommonInfoController(ILogger<CommonInfoController> logger)
{
_logger = logger;
}
[HttpGet(Name = "getCommonInfo")]
public CommonInfo getCommonInfo()
{
return new CommonInfo
{
Date = DateOnly.FromDateTime(DateTime.Now),
Text = "getCommonInfo"
};
}
[HttpPost(Name = "postCommonInfo")]
public CommonInfo postCommonInfo()
{
return new CommonInfo
{
Date = DateOnly.FromDateTime(DateTime.Now),
Text = "postCommonInfo"
};
}
[HttpPut(Name = "putCommonInfo")]
public CommonInfo putCommonInfo()
{
return new CommonInfo
{
Date = DateOnly.FromDateTime(DateTime.Now),
Text = "putCommonInfo"
};
}
[HttpDelete(Name = "deleteCommonInfo")]
public CommonInfo deleteCommonInfo()
{
return new CommonInfo
{
Date = DateOnly.FromDateTime(DateTime.Now),
Text = "deleteCommonInfo"
};
}
}
}
运行项目进行测试
总结
把控制器当成一整块资源,使用了RESTful API,HTTP方法和方法含义如下:
GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供完整资源数据)。
PATCH(UPDATE):在服务器更新资源(客户端提供需要修改的资源数据)。
DELETE(DELETE):从服务器删除资源。
特性路由
编写如下代码
[HttpGet]
[Route("{userId}")] // 特性路由
public CommonInfo getCommonInfoTest(int userId)
{
return new CommonInfo
{
Date = DateOnly.FromDateTime(DateTime.Now),
Text = "特性路由 userId:" + userId
};
}
运行项目,测试携带参数
遇到报错
InvalidOperationException: The constraint reference ' int' could not be resolved to a type. Register the constraint type with 'Microsoft.AspNetCore.Routing.RouteOptions.ConstraintMap'.
解决方案:
-
案例1:[Route(“{userId: int}”)] 改为 [Route(“{userId}”)]
-
案例2:HttpGet(“update/{id :string }”)删除:string,将其更改为HttpGet(“update/{id}”)
结语
- 今天就写到这里啦~
- 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
- 大家要天天开心哦
欢迎大家指出文章需要改正之处~
学无止境,合作共赢