본문 바로가기
C#

모델 바인딩 동작의 명시 여부

by haheehee 2025. 8. 11.
728x90

 

1. [FromRoute] Guid id

  • ASP.NET Core의 모델 바인딩에 **명시적으로 “이 값은 라우트에서 바인딩하라”**고 지시하는 방식
  • 메서드 시그니처만 보고도 바인딩 출처(Route)가 확실하게 드러남
  • 파라미터 이름이 라우트 템플릿({id})과 달라도 Name 속성으로 매핑 가능
  • 예:
  • public Task<IActionResult> GetFile([FromRoute(Name = "id")] Guid fileId)
  • 장점: 유지보수 시 소스 파악이 쉬움, 이름 불일치 상황에서도 바인딩 가능
  • 단점: 코드가 조금 더 장황함

2. 어노테이션 없이 Guid id

  • 기본 모델 바인딩 규칙에 따라 바인딩
  • 기본 규칙:
    1. 라우트 값에서 같은 이름을 가진 파라미터를 먼저 찾음
    2. 없으면 쿼리스트링, 폼 데이터, 바디 순서로 탐색
  • 라우트 템플릿에 {id}가 있고, 파라미터 이름도 id라면 자동으로 매핑됨
  • 예:
  • public Task<IActionResult> GetFile(Guid id)
  • 장점: 코드가 간결함
  • 단점: 라우트와 파라미터 이름이 불일치하면 동작 안 함, 바인딩 출처가 한눈에 안 보임

결론

  • 이름이 동일하고 간단한 API → 어노테이션 없이 Guid id 사용해도 문제 없음
  • 이름이 다르거나 바인딩 출처를 명확히 하고 싶은 경우 → [FromRoute] 명시
728x90

댓글