C# 获取公告信息 API 接口优化

以下代码实现了一个获取公告信息的 API 接口,并进行优化,提高代码可读性和效率。

原始代码:

public async Task<ApiResult> GetId(int id)
{
    if (id <= 0 || id > 9999)
    {
        //获取最近的一条
        var data = await _db.ContentNotices
            .OrderByDescending(x => x.Sort)
            .FirstOrDefaultAsync(x => x.Status == 1);

        var res = new NoticeInfoRes()
        {
            Id = data.Id,
            Time = data.Time.ToString("yyyy-MM-dd"),
            Title = data.Title,
            Content = data.Content,
        };
        return Api.Ok(res);
    }

    var data1 = await _notice.GetById(id);
    data1 ??= await _db.ContentNotices
            .OrderByDescending(x => x.Sort)
            .FirstOrDefaultAsync(x => x.Status == 1);

    var res1 = new NoticeInfoRes()
    {
        Id = data1.Id,
        Time = data1.Time.ToString("yyyy-MM-dd"),
        Title = data1.Title,
        Content = data1.Content,
    };
    return Api.Ok(res1);

}

优化后的代码:

public async Task<ApiResult> GetId(int id)
{
    var data = await _notice.GetById(id);
    if (data == null && (id <= 0 || id > 9999))
    {
        //获取最近的一条
        data = await _db.ContentNotices
            .OrderByDescending(x => x.Sort)
            .FirstOrDefaultAsync(x => x.Status == 1);
    }

    if (data == null)
    {
        return Api.NotFound();
    }

    var res = new NoticeInfoRes()
    {
        Id = data.Id,
        Time = data.Time.ToString("yyyy-MM-dd"),
        Title = data.Title,
        Content = data.Content,
    };

    return Api.Ok(res);
}

优化说明:

  1. 将判断 id 是否在有效范围内的逻辑与获取最近一条数据的逻辑合并,减少重复代码。
  2. 判断是否有查询到数据的逻辑与返回响应的逻辑分离,提高代码可读性。
  3. 使用空值合并操作符(??=)简化代码。

优化后的代码更加简洁,易于理解和维护。

注意: 为了确保代码的安全性,需要对传入的 id 参数进行必要的验证,防止 SQL 注入攻击。

C# 获取公告信息 API 接口优化

原文地址: https://www.cveoy.top/t/topic/lwLB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录