设置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

相关推荐
绿荫阿广8 小时前
将SignalR移植到Esp32—让小智设备无缝连接.NET功能拓展MCP服务
.net·asp.net core·mcp
wstcl16 小时前
像asp.net core webapi一样在asp.net frameworks中使用Swagger,方便调试接口
后端·asp.net·swagger·webapi
贾修行5 天前
.NET 全栈开发学习路线:从入门到分布式
c#·.net·wpf·asp.net core·web api·winforms·services
贾修行8 天前
ASP.NET Core SignalR 从入门到精通:打造实时 Web 应用的利器
websocket·microsoft·asp.net core·signalr·realtime·web-api
冷冷的菜哥16 天前
ASP.NET Core调用ffmpeg对视频进行截图,截取,增加水印
开发语言·后端·ffmpeg·asp.net·音视频·asp.net core
xiaoid2 个月前
C#向jave平台的API接口推送
c#·post·webapi
绿荫阿广2 个月前
使用.NET开发并上线一个小智AI对话机器人的MCP服务转接平台
.net·asp.net core·mcp
dephixf3 个月前
工业级部署指南:在西门子IOT2050(Debian 12)上搭建.NET 9.0环境与应用部署(进阶篇)
asp.net core·iot·设备管理系统·.net 9·能源管理监控系统
csdn_aspnet3 个月前
使用 .NET 8 构建 RESTful Web API
restful·webapi·.net8
csdn_aspnet3 个月前
在 .Net 8 WEBAPI 中实现实体框架的 Code First 方法
webapi·.net8