C# 获取公告信息 API 接口优化
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);
}
优化说明:
- 将判断 id 是否在有效范围内的逻辑与获取最近一条数据的逻辑合并,减少重复代码。
- 判断是否有查询到数据的逻辑与返回响应的逻辑分离,提高代码可读性。
- 使用空值合并操作符(??=)简化代码。
优化后的代码更加简洁,易于理解和维护。
注意: 为了确保代码的安全性,需要对传入的 id 参数进行必要的验证,防止 SQL 注入攻击。
原文地址: https://www.cveoy.top/t/topic/lwLB 著作权归作者所有。请勿转载和采集!