Я пытаюсь создать конечную точку API двойного назначения. Идея состоит в том, что если пользователь передает необязательный параметр checkExistence
, то ответ будет истинным или ложным, в зависимости от того, существует ли комбинация FormId + Bucket + sceneName в базовой таблице базы данных. С другой стороны, если параметр checkExistence
не передан, то ответом будет 404 или не найдены либо данные (если комбинация не существует), либо данные (если комбинация существует). Вот код на данный момент:
[HttpGet("{scenarioName}/{bucket}/{formulaId}/{checkExistence?}")]
public virtual async Task<IActionResult> GetAsync(string scenarioName, DateTime bucket, string formulaId)
{
var dto = await DataService.GetAsync(new object[] { formulaId, bucket, scenarioName });
string? checkExistence = "";
if (string.IsNullOrEmpty(checkExistence))
{
if (dto == null)
{
return NotFound();
}
return Ok(dto);
}
else
{
return (dto == null) ? Ok(false) : Ok(true);
}
}
Когда конечная точка нажата, она действует так, как будто checkExistence
всегда пусто, даже если в URL передается значение для этого параметра. Я подозреваю, что это потому, что {checkExistence?}
из URL не присваивается локальной переменной checkExistence
... но я не знаю, как go сделать это назначение, чтобы проверить эту теорию. Есть ли способ сделать это назначение? И есть ли другие причины, по которым API мог бы действовать таким образом?