Java

[Java] 2. RestController 작성

hyun_ji 2021. 8. 20. 23:54
반응형
SMALL

세팅된 환경이 잘 켜지는지 확인해봅시다.

디렉토리는 밑줄 친 demo까지 이동해야 합니다.

터미널에 아래 명령어를 입력합니다.

./mvnw spring-boot:run

짜잔 에러가 나네요.

포트가 없어서 그러니 포트 설정을 해줍니다.

application.properties 파일로 이동합니다. 다른 언어에서 .env파일과 같은 역할입니다.

자신의 디비 정보를 입력해주세요.

그래도 에러가 날거에요 pom.xml에 mysql을 추가해줘야하기 때문입니다.

	<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>

이 부분을 추가해줄게요.

다시 서버를 실행해보면

제대로 실행되는 것을 확인할 수 있네요.

 

이제 crud를 작성하기 위한 디렉토리 세팅을 하겠습니다.

demo>src>main>java|daily|coding 안에 아래와 같은 controller,mapper,models,service디렉토리를 생성해주세요.

컨트롤러에 ExController.java 파일을 생성하여 crud를 작성하기 위해 아래와 같이 내용을 작성합니다.

package daily.coding.controller; // 자기 위치를 명시

// 프레임워크에 탑재된 기능 가져오기
import org.springframework.web.bind.annotation.*;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;

@RestController // restApi를 작성할 수 있는 컨트롤러
@RequestMapping("/api") // url을 api로 지정
@CrossOrigin(origins="*", allowedHeaders="*") // cors허용
public class ExController {
  
}

우선 get으로 원하는 내용을 띄워보겠습니다.

package daily.coding.controller; // 자기 위치를 명시

// 프레임워크에 탑재된 기능 가져오기
import org.springframework.web.bind.annotation.*;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;

@RestController // restApi를 작성할 수 있는 컨트롤러
@RequestMapping("/api") // url을 api로 지정
@CrossOrigin(origins="*", allowedHeaders="*") // cors허용
public class ExController {

  @GetMapping("/hello")
  public ResponseEntity<Map<String,String>> Hello() {
    Map<String,String> map = new HashMap<>();
    map.put("result", "hello world");

    return new ResponseEntity<>(map, HttpStatus.OK);
  }

}

실행시켜보면 에러가 날거에요.

내장 모듈을 사용하여 작성했지만 내장 모듈을 import 시키지 않았기 때문이에요.

나중에 사용할 친구들도 미리 import시켜서 작성하면

package daily.coding.controller; // 자기 위치를 명시

// 프레임워크에 탑재된 기능 가져오기
import org.springframework.web.bind.annotation.*;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;

// 자바 가지고 있는 내장 모듈
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.List;
import java.util.Iterator;

@RestController // restApi를 작성할 수 있는 컨트롤러
@RequestMapping("/api") // url을 api로 지정
@CrossOrigin(origins="*", allowedHeaders="*") // cors허용
public class ExController {

  @GetMapping("/hello")
  public ResponseEntity<Map<String,String>> Hello() {
    Map<String,String> map = new HashMap<>();
    map.put("result", "hello world");

    return new ResponseEntity<>(map, HttpStatus.OK);
  }

}

이렇게 작성해주면 됩니다.

실행해보면 제대로 실행되는 모습을 볼 수 있을 거에요.

 

이제 포스트맨으로 작성한 내용을 한번 확인해볼게요.

에러가 나네요.

DemoApplication.java에서 추가해줘야 할 내용이 있어요.

package daily.coding.demo;

import daily.coding.controller.ExController; // 컨트롤러 불러오기

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan; //컴포넌트 스캔을 위한 모듈

@SpringBootApplication
@ComponentScan(basePackageClasses={ExController.class}) //컨트롤러 스캔
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

}

이렇게 작성해준 후, 다시 포스트맨을 돌려보면

성공적으로 "hello world"가 뜨는 것을 확인할 수 있어요.

반응형
LIST