SpringBoot RESTful 웹 서비스 구축하기

가이드문구

SpringBoot 를 이용하여 "Hello, World" RESTful 웹서비스를 생성하는 방법을 알아보겠습니다.


● SpringBoot 테스트 과제

1. JSON 표현으로 데이터 응답하기

- {"id" : test, "content" : "Hello, World"}


2. 쿼리 문자열에 매개변수를 입력하여 content 값 변경하기

- http://localhost:8080/springboot-test/name=SpringBoot


3. 매개변수 값을 전달했을 때 변경된 JSON 데이터 응답하기

- {"id" : test, "content" : "Hello, SpringBoot"}


● 개발환경

- Eclipse 2022-06

- JDK 1.11

- Gradle 7.4.1


● SpringBootApplication 시작하기


- testController 리소스 컨트롤러 파일을 생성합니다.

- RESTful 웹 서비스를 구축하는 Spring의 접근 방식에서 HTTP 요청은 컨트롤러에 의해 처리됩니다. 이러한 구성 요소는 @RestController주석 으로 식별되며 testController다음 목록( from src/main/java/com/example/demo/testController.java) 에 표시된 클래스 의 새 인스턴스를 반환하여 GET요청을 처리합니다.

-이 컨트롤러는 간결하고 단순하지만 내부에는 많은 로직이 있습니다. @GetMapping주석은 HTTP GET 요청 이 메서드 /test에 매핑되도록 합니다.

-기존 MVC 컨트롤러와 RESTful 웹 서비스 컨트롤러의 주요 차이점은 HTTP 응답 본문이 생성되는 방식입니다. HTML에 대한 인사말 데이터의 서버 측 렌더링을 수행하기 위해 보기 기술에 의존하는 대신 이 RESTful 웹 서비스 컨트롤러는 개체를 채우고 반환합니다. 개체 데이터는 JSON으로 HTTP 응답에 직접 기록됩니다.

Java - AtomicLong
AtomicLong은 Long 자료형을 갖고 있는 Wrapping 클래스입니다.
Thread-safe로 구현되어 멀티쓰레드에서 synchronized 없이 사용할 수 있습니다.
또한 synchronized 보다 적은 비용으로 동시성을 보장할 수 있습니다.
여기에서는 id 값으로 사용합니다.
  1. @RestController
  2. public class testController {
  3. private static final String template = "Hello, %s";
  4. private final AtomicLong counter = new AtomicLong();
  5. @GetMapping("/test")
  6. public testBean test(@RequestParam(value="name", defaultValue = "World") String name) {
  7. return new testBean(counter.incrementAndGet(), String.format(template, name));
  8. }
  9. }


- testBean 파일을 생성합니다.

  1. public class testBean {
  2. public final long id;
  3. public final String name;
  4. public testBean(long id, String name) {
  5. this.id = id;
  6. this.name = name;
  7. }
  8. public long getId() {
  9. return id;
  10. }
  11. public String getName() {
  12. return name;
  13. }
  14. }


- SpringBootApplication 실행



- 인터넷 주소창에 localhost:8080/test 호출


- name 매개변수 값에 SpringBoot 값으로 대체해서 테스트 합니다.




작성자 소개
초이 프로필
WrapUp 블로거

초이

반려견을 좋아하고, 차를 좋아하고, 여행을 좋아하고, 맛집을 찾아 즐기는 웹 개발자 입니다^^