如何使用字典作为api的数据?

问题描述

我有一个这样创建的字典

var projects = new Dictionary<string,string>
  { {"7000316139.13.01","Project 1" },... (all the records in the dictionary are sequential from here)
  }

我有一个看起来像这样的get函数

    public IActionResult GetProjectByProjectCode(string projectCode)
    {
        try
        {
            var project = _repository.Project.GetProjectByProjectCode(projectCode);

            if (project == null)
            {
                _logger.LogError($"Project with project code {projectCode},has not been found in db.");
                return NotFound();
            }
            else
            {
                _logger.LogInfo($"Returned project with project code {projectCode}");

                var projectResult = _mapper.Map<ProjectDto>(project);
                return Ok(projectResult);
            }
        }
        catch (Exception ex)
        {
            _logger.LogError($"Something went wrong inside GetProjectByProjectCode action: {ex.Message}");
            return StatusCode(500,"Internal server error");
        }

    }

我需要的是访问Dictionary作为get方法的数据源。

我试图直接将字典直接放入get方法中,但失败了。

我希望看到的结果如下: 7000316139.13.01项目1

这是存储库代码

   public Project GetProjectByProjectCode(string projectCode)
{
    return FindByCondition(project => project.ProjectCode.Equals(projectCode))
        .FirstOrDefault();
}

我希望这会有所帮助

解决方法

您可能想添加_repository.Project.GetProjectByProjectCode方法的另一个“模拟”实现,也许重新实现包含该方法的整个类。该实现应从内联字典而不是数据库中获取值。 然后,当您处于“测试模式”时,添加一些机制以使用替代实现,否则,将添加标准实现。

除此之外,我建议您阅读有关单元测试范例以及相关工具和技术的一些东西。