이중 목적 API 끝점을 만들려고합니다. 아이디어는 사용자가 선택적 매개 변수 checkExistence
를 전달 하면 formulaId + bucket + scenarioName 조합이 기본 데이터베이스 테이블에 존재하는지 여부에 따라 응답이 true 또는 false가됩니다. 반면에 checkExistence
매개 변수가 전달되지 않으면 응답은 404 not found 또는 데이터 (조합이 존재하지 않는 경우) 또는 데이터 (조합이 존재하는 경우)가됩니다. 지금까지 코드는 다음과 같습니다.
[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
.하지만 해당 이론을 테스트하기 위해 할당하는 방법을 모르겠습니다. 이 임무를 수행하는 방법이 있습니까? API가 이런 식으로 작동하는 다른 이유가 있습니까?
선택적 경로 매개 변수는 메서드 서명에 선택적 매개 변수로 포함되어야합니다. 그런 다음 메서드 내에서 선언 된 변수를 제거 할 수 있습니다.
[HttpGet("{scenarioName}/{bucket}/{formulaId}/{checkExistence?}")]
public virtual async Task<IActionResult> GetAsync(string scenarioName, DateTime bucket, string formulaId, string checkExistence = null)
{
var dto = await DataService.GetAsync(new object[] { formulaId, bucket, scenarioName });
if (string.IsNullOrEmpty(checkExistence))
...
}
자세한 내용은 선택적 URI 매개 변수 및 기본값 을 참조하세요.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다