设置asp.net core WebApi函数请求参数可空的两种方式

以下面定义的asp.net core WebApi函数为例,客户端发送申请时,默认三个参数均为必填项,不填会报错,如下图所示:

csharp 复制代码
[HttpGet]
public string GetSpecifyValue(string param1,string param2,string param3)
{
    return $"param1:{param1},param2:{param2},param3:{param3}";
}

如果需要设置param3参数可为空,可以使用以下两种方式:
  1)在参数类型后添加?,标识参数为可空,示例代码及函数运行效果如下所示,:

csharp 复制代码
[HttpGet]
public string GetSpecifyValue(string param1,string param2,string? param3)
{
    return $"param1:{param1},param2:{param2},param3:{param3}";
}

2)将函数输入参数封装为类,通过请求体传参方式(要把请求方式从GET该为POST),示例代码及运行效果如下所示:

csharp 复制代码
 public class InputParamsDemo
 {
     public string Param1 { get; set; }
     public string Param2 { get; set; }
     public string Param3 { get; set; } = string.Empty;//设置了默认值即可不需要强制传值
 }
 [HttpPost]
  public string GetSpecifyValue([FromBody] InputParamsDemo ip)
  {
      return $"param1:{ip.Param1},param2:{ip.Param2},param3:{ip.Param3}";
  }

参考文献:

[1]https://blog.51cto.com/u_16213450/7475977

相关推荐
lixww.cn9 天前
ASP.NET Core用MediatR实现领域事件
ddd·asp.net core·mediatr
宇内流云11 天前
Tinyfox 简易教程之:Hello World!
websocket·webapi·tinyfox
lixww.cn12 天前
ASP.NET Core SignalR向部分客户端发消息
javascript·websocket·vue·asp.net core·signalr
lixww.cn12 天前
ASP.NET Core SignalR的协议协商
asp.net core·signalr
lixww.cn13 天前
ASP.NET Core SignalR的分布式部署
redis·消息队列·asp.net core·signalr
lixww.cn14 天前
ASP.NET Core对JWT的封装
asp.net core·jwt·authorize
lixww.cn14 天前
ASP.NET Core JWT Version
asp.net core·jwt·filter·identity
lixww.cn15 天前
ASP.NET Core JWT
asp.net core·jwt
lixww.cn15 天前
ASP.NET Core标识框架Identity
asp.net core·rbac·identity
火星大能猫16 天前
使用C# 调用deepseek api接口,来实现正常访问
ai·c#·webapi·deepseek