You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Web API方法中实现单参数(ID/名称)通用删除

解决方案

要实现仅传入ID或名称其中一个参数就能执行删除,需要从参数可空性、参数校验和查询逻辑优化三个方面修改代码,具体步骤如下:

1. 修改控制器参数与校验逻辑

把int id改为可空类型int? id,这样不传id时参数会是null;同时添加校验,确保id和name两个参数只能传入一个,避免歧义。另外修复原代码中重复调用删除方法的bug:

[HttpDelete]
[Route("deletebusinessstream")]
public ActionResult DeleteBusinessStream(int? id, string name)
{
    var pm = new PostMessage();

    // 参数校验:确保仅传入id或name其中一个
    if ((id == null && string.IsNullOrEmpty(name)) || (id != null && !string.IsNullOrEmpty(name)))
    {
        pm.error = true;
        pm.message = "请仅传入ID或名称其中一个参数";
        return Ok(pm);
    }

    try
    {
        int returnedValue = this.jobsApi.DeleteBusinessStream(id, name);

        if (returnedValue == 1)
        {
            pm.error = true;
            pm.message = "删除业务流失败:未找到对应记录";
        }
        else
        {
            pm.error = false;
            pm.message = "删除业务流成功";
        }
    }
    catch (Exception ex)
    {
        pm.error = true;
        pm.message = $"删除业务流失败:{ex.Message}";
    }

    return Ok(pm);
}

2. 优化业务层查询逻辑

根据传入的非空参数构建查询条件,避免参数为null时出现意外匹配(比如name为null时不会去匹配数据库中名称为null的记录):

public int DeleteBusinessStream(int? id, string name)
{
    BusinessStream deleteBusinessStream = null;

    if (id.HasValue)
    {
        // 仅根据ID查询
        deleteBusinessStream = this.dbcontext.BusinessStreams.FirstOrDefault(p => p.BusinessStreamId == id.Value);
    }
    else if (!string.IsNullOrEmpty(name))
    {
        // 仅根据名称查询
        deleteBusinessStream = this.dbcontext.BusinessStreams.FirstOrDefault(p => p.BusinessStreamName == name);
    }

    if (deleteBusinessStream == null)
    {
        return 1;
    }

    this.dbcontext.BusinessStreams.Remove(deleteBusinessStream);
    this.dbcontext.SaveChanges();
    return 0;
}

3. 测试请求示例

现在可以用以下两种方式发起请求:

  • 通过ID删除:https://localhost:7190/api/Employer/deletebusinessstream?id=111
  • 通过名称删除:https://localhost:7190/api/Employer/deletebusinessstream?name=ICT

关键说明

  • 可空类型int?允许参数不传入,避免值类型必须传值的限制;
  • 增加参数校验可以防止用户同时传入两个参数导致的逻辑歧义;
  • 分条件构建查询能避免原逻辑中参数为null时的错误匹配,提升查询准确性。

内容的提问来源于stack exchange,提问作者GIS Support EEDC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 15:45:13