본문 바로가기

웹 개발/스프링

[스프링 부트 기초] RESTful Controller

0. RESTful이란?

RESTful 이란 Representational State Transfer(REST) 아키텍처 스타일을 따르는 웹 서비스로서 분산 하이퍼미디어 시스템을 위한 자원(URI)의 표시, 행위(HTTP Method)를 정의한다. RESTful 한 웹 서비스는 이러한 REST 아키텍처 스타일을 따르며, 각 자원에 대한 고유한 URI를 정의하고 해당 자원의 CRUD(Create, Read, Update, Delete) 작업을 HTTP Method를 통해 처리할 수 있는 웹 서비스를 말한다. 

 

스프링에서는 @RestController 어노테이션을 사용하면, 해당 클래스가 RESTful 웹 서비스를 제공하는 컨트롤러임을 나타낸다. 이 클래스에서 정의된 각각의 메소드들은 URI, HTTP Method에의해 매핑될 수 있으며 해당 URI로 요청이 들어오면 해당 메소드를 실행한다. 이를 통해 클라이언트와 서버 간의 데이터 통신을 RESTful한 방식으로 처리할 수 있다.

 

RESTful 한 웹 서비스는 주로 JSON 형식의 데이터를 사용합니다. JSON은 경량 데이터 교환 형식 중 하나로서, 데이터를 표현하기 위한 문법적인 규칙을 정의 하고 있습니다. JSON은 자바스크립트의 객체 표기법을 기반으로 하고 있어서, 자바스크립트에서 쉽게 파싱할 수 있습니다. 

 

만약 RestController로 문자열을 반환할 경우 해당 문자열이 HTTP Response Body에 포함되어 반환됩니다.

객체를 반환하는 경우 스프링 프레임워크에서 자동으로 해당 객체를 JSON 형식으로 반환하여 HTTP Response Body에 포함시켜 반환합니다.

 

반환할 수 있는 형식에는 JSON, 문자열 뿐만 아니라 다른 형식도 가능합니다. 예를들어, 이미지, 파일과 같은 이진 데이터를 반환할 수 있습니다. 하지만 일반적으로 RESTful한 웹 서비스에서는 JSON 형식의 데이터를 주고 받는 것이 일반적입니다. 

 

 

1. 스프링부트에서 RESTful API 구현하기

@RestController
public class CourseController {

    @GetMapping("/courses")
    public Course getCourses() {
        Course course = new Course();
        course.setTitle("웹개발의 봄 스프링");
        course.setDays(35);
        course.setTutor("남병관");
        return course;
    }
}

실행하기 : 

서버를 실행한 이후 브라우저에서 localhost:8080/courses를 요청한다.

 

실행결과 :

{
    "title": "웹개발의 봄 스프링",
    "tutor": "남병관",
    "days": 35
}

 

2. RESTful API 설계 원칙

https://sanghaklee.tistory.com/57

 

RESTful API 설계 가이드

1. RESTful API 설계 가이드본 문서는 REST API를 좀 더 RESTful 하게 설계하도록 가이드할 목적으로 만들어졌다.따라서, 기본적인 REST API 개념 설명은 아래의 링크로 대신한다. REST API 제대로 알고 사용

sanghaklee.tistory.com