DBA

[FromBody] JObject settings 완전 정리 – ASP.NET Web API에서 유동적인 JSON 받기 본문

[3] Development/MVC(ASP.NET with C#)

[FromBody] JObject settings 완전 정리 – ASP.NET Web API에서 유동적인 JSON 받기

코볼 2025. 4. 4. 15:03
728x90
반응형
SMALL

ASP.NET Web API에서 [FromBody] JObject 사용법과 예제

  • [FromBody]는 무엇인가요?
  • JObject는 어떤 용도로 쓰일까요?
  • ASP.NET Web API에서 동적 JSON 받기
  • 모델 클래스 대신 JObject를 써야 할 때
  • 사용 시 주의할 점

 

 

ASP.NET Web API에서 POST 방식의 요청을 받을 때, 우리는 주로 다음과 같은 방법으로 데이터를 처리합니다:

csharp

public IHttpActionResult Save([FromBody] JObject settings)

처음 보는 분들에게는 [FromBody]와 JObject가 다소 생소하게 느껴질 수 있습니다.
이번 글에서는 ASP.NET Web API에서 유연하게 JSON 데이터를 받기 위한 구조인 [FromBody] JObject의 의미와 활용 방법을 예제를 통해 알아보겠습니다.

 

🔹 [FromBody]란?

ASP.NET Web API에서 [FromBody]는 클라이언트가 전송한 HTTP 요청의 본문(Body) 에 포함된 JSON 데이터를 해당 파라미터에 직접 매핑하라는 의미입니다.

  • POST, PUT 요청에서 주로 사용
  • 기본적으로 단순 타입(string, int)은 [FromUri]로 처리되지만,
  • 복잡한 타입(JSON)은 [FromBody]를 사용해 Body에서 읽어옵니다
http

POST /api/config/save HTTP/1.1  
Content-Type: application/json

{
  "timezone": "Asia/Seoul",
  "theme": "dark"
}

이 요청을 받는 메서드는 다음과 같습니다:

csharp

public IHttpActionResult Save([FromBody] JObject settings)

 

 

🔹 JObject란?

JObject는 Newtonsoft.Json (Json.NET) 라이브러리에서 제공하는 동적 JSON 객체입니다.
모델 클래스를 만들지 않고도 자유롭게 키-값 형태의 JSON 데이터를 다룰 수 있습니다.

  • 키에 직접 접근 가능 (settings["theme"])
  • .Value<T>() 메서드로 안전한 형 변환 가능
  • 유동적 구조를 가진 JSON 처리에 적합

 

🔸 예제 코드 – 동적 JSON 파라미터 받기

csharp

[HttpPost]
public IHttpActionResult SaveSettings([FromBody] JObject settings)
{
    var timezone = settings.Value<string>("timezone");
    var theme = settings["theme"]?.ToString();

    return Ok(new
    {
        Result = "Success",
        Timezone = timezone,
        Theme = theme
    });
}

 

 

🔸 모델 클래스 vs JObject

상황 모델 클래스 사용 JObject 사용
JSON 구조가 명확하고 고정적일 때 ✅ 추천 ❌ 불필요
JSON 구조가 유동적일 때 (옵션값, 설정 등) ❌ 불편 ✅ 유연
정적 타입 안전성 필요 ✅ 컴파일 타임 체크 가능 ❌ 런타임 오류 가능
빠르게 구조 없는 JSON 처리 ❌ 모델 생성 필요 ✅ 바로 처리 가능

 

 

⚠️ 사용 시 주의사항

 

  • Content-Type을 반드시 application/json으로 지정
    • 그렇지 않으면 settings는 null로 바인딩됨
  • POST/PUT에서만 사용
    • GET에서는 [FromBody] 지원되지 않음
  • [FromBody]는 단일 파라미터에만 적용 가능
    • 여러 개의 [FromBody] 파라미터는 허용되지 않음

 

 

구성 요소 설명
[FromBody] HTTP Body의 JSON 데이터를 해당 파라미터로 바인딩하라는 지시
JObject 동적으로 JSON 구조를 읽고 쓸 수 있는 객체 (Newtonsoft.Json)
활용 상황 동적 설정, 유동적 구조의 데이터 받을 때 매우 유용

 

ASP.NET Web API에서 [FromBody] JObject는 복잡하고 유동적인 JSON 구조를 처리하기 위한 강력한 도구입니다.
설정 값, 필드가 자주 변경되는 입력, 키-값 옵션 등과 같이 고정된 모델로 표현하기 어려운 경우에 유용하게 사용할 수 있습니다.

하지만 정형화된 데이터라면 여전히 모델 클래스를 사용하는 것이 유지보수에 유리하다는 점도 함께 고려해야겠죠.

 

728x90
반응형
LIST
Comments