JSON 개요 및 예제

실무에서 권장되는 사용 패턴

작업응답 코드응답 메서드응답 Body
생성(Create)201CreatedAtAction()생성된 데이터
조회(Read)200Ok()데이터
업데이트(Update)200Ok()업데이트된 데이터
삭제(Delete)204NoContent()없음

완전한 CRUD 컨트롤러 + Swagger 설정 예제

1) Program.cs (Swagger + MVC 설정)

2) 모델 (유효성 검사 포함)

3) 간단한 인메모리 저장소 (데모용)

4) 컨트롤러 (CRUD + 상태코드 명확화)

5) Swagger에서 테스트 흐름 (요약)

POST /api/OSI

  • Body 예시:

응답: 201 Created

  • 헤더: Location: https://localhost:5001/api/OSI/{id}
  • 바디: 생성된 객체(JSON)

GET /api/OSI/{id}

  • 응답: 200 OK + 해당 객체

PUT /api/OSI/{id}

  • 바디에 전체 필드 전달
  • 응답: 204 No Content (본문 없음)

DELETE /api/OSI/{id}

  • 응답: 204 No Content

StatusCodes 열거형(StatusCodes 클래스)

이 값들은 Microsoft.AspNetCore.Http 네임스페이스에 정의되어 있어요.

열거형 상수숫자의미
StatusCodes.Status200OK200요청 성공
StatusCodes.Status201Created201리소스 생성 성공
StatusCodes.Status204NoContent204요청 성공, 본문 없음
StatusCodes.Status400BadRequest400잘못된 요청
StatusCodes.Status401Unauthorized401인증 필요
StatusCodes.Status403Forbidden403접근 금지
StatusCodes.Status404NotFound404리소스 없음
StatusCodes.Status500InternalServerError500서버 에러

실전 패턴

[ProducesResponseType]Swagger 문서 품질을 높이고 협업을 원활하게 만드는 핵심 도구입니다.

API 사용자는 Swagger UI에서 “이 API가 어떤 상황에서 어떤 상태 코드와 데이터를 반환하는지” 바로 알 수 있습니다.

실무에서는 모든 컨트롤러 액션마다 꼭 명시하는 것이 좋습니다.

1. CRUD의 뜻

약어의미설명예시 (HTTP 메서드)
CCreate새로운 데이터를 생성POST
RRead저장된 데이터를 조회GET
UUpdate기존 데이터를 수정PUT / PATCH
DDelete데이터를 삭제DELETE

2. CRUD와 HTTP 메서드의 관계

RESTful API에서는 보통 CRUD → HTTP 메서드를 다음처럼 매핑합니다.

동작설명HTTP 메서드예시 URL
Create새 데이터 생성POSTPOST /api/OSI
Read (전체)전체 목록 조회GETGET /api/OSI
Read (단일)특정 ID 데이터 조회GETGET /api/OSI/3
Update기존 데이터 수정PUT 또는 PATCHPUT /api/OSI/3
Delete데이터 삭제DELETEDELETE /api/OSI/3