반응형
💡 REST API를 사용하여 간단한 CRUD 동작을 구현하기

 

✅ 프로젝트 세팅

✔ Spring Initializer를 이용하여 프로젝트 파일 생성
✔ Gradle 선택
✔ 스프링 버전 2.7.x
✔ 자바 버전 11
❗ 참고로 스프링 버전 3.x.x를 선택했다면 자바는 17버전 이상만 가능
✔ Spring Web 종속성 추가
✔ Generate 클릭 후 다운로드 받은 압축파일을 적절한 위치에 풀어준다.

✔ IntelliJ를 열고 프로젝트 파일을 불러온다
✔ File의 setting에서 프로젝트 언어를 gradle > IntelliJ IDEA로 모두 변경하고, 자바 11버전을 사용하도록 설정

 

  • Cloud Vendor(클라우드 공급업체)라는 객체가 있다고 가정한다.
  • 이 객체는 id, name, address, phone number를 정보로 갖는다.
  • 이 객체의 정보를 불러오고, 새로운 정보를 입력(새로운 객체를 생성)하고, 정보를 수정하고, 객체를 삭제하는 CRUD 동작을 rest api를 통해 구현할 것이다.

1. java 디렉토리 하에 아래와 같이 model 디렉토리를 생성한다.

  • model은 객체의 정보를 담는 역할을 한다.
  • model 디렉토리 아래에 CloudVendor라는 클래스를 정의해준다.
  • CloudVendor는 다음 네가지 속성을 갖는다.
    << private >>
    vendorId : String
    vendorName : String
    vendorAddress : String
    vendorPhoneNumber : String
  • 그리고 생성자와 getter/setter 메서드를 갖는다.
    이는 클래스 이름을 오른쪽 마우스로 누르면 generator 기능을 통해 자동 생성 가능하다.

2. java 디렉토리 하에 아래와 같이 controller 디렉토리를 생성한다.

  • 서버가 프론트 단과 정보를 주고 받게 되는 부분이다. 즉, 프론트 단과의 연결 역할을 한다.
  • CloudVendorAPIService라는 클래스를 만들어서 프론트로부터 받은 정보나 서버로부터 전달하고자 하는 정보를 CRUD 처리 하도록 할 것이다.
  • 이 클래스는 REST API로써 동작할 것이기 때문에, class에 @RestController를 붙여 rest api로 만든다.
  • rest api의 특징은 경로가 특정 이름으로 패턴을 가진다는 점이있다. 따라서 @RequestMapping("/cloudvendor")를 통해 8080이하 경로에서 /cloudvendor로 시작하는 경로에서는 이 클래스가 동작하도록 한다.
@RestController
@RequestMapping("/cloudvendor")
public class CloudVendorAPIService {

 

  • 이 클래스에서 사용할 CloudVendor 객체를 하나 생성한다.
CloudVendor cloudVendor;

 

3. Get

  • 특정 id에 해당하는 정보를 읽어오는  READ 동작을 Get 메서드를 통해 구현하자.
  • @GetMapping을 통해서 {}안에 들어가는 vendorId에 해당하는 vendor 정보를 가져오도록 한다.
@GetMapping("{vendorId}")
  • rest api는 json("이름":"값")형식을 반환하기 때문에, json형식으로 값을 return 해야 한다.
public CloudVendor getCloudVendorDetails(String vendorId)
{
    return cloudVendor;
}
  • 현재 코드는 단순히 동작만을 확인하기 위함이므로, cloudVendor에 있는 vendorId랑 들어온 Id가 같은지 비교하는 과정은 생략할 것이다. 

4. POST

  • 새로운 vendor 정보를 생성하는 CREATE 동작을 post 메서드를 통해 구현하자.
  • 함수에 @PostMapping을 추가한다
@PostMapping
  • 프론트로부터 입력받은 CloudVendor를 인자로 받고, 이 클래스에 있는 cloudVendor 객체에 입력받은 값을 저장해준다.
public String postCloudVendorDetails(@RequestBody CloudVendor cloudVendor)
{
    this.cloudVendor = cloudVendor;
    return "Cloud Vendor Created Successfully";
}
  • 프론트로부터 받을 때 @RequestBody를 통해 받아온다.
  • 잘 create되었으면 string 타입의 메시지를 출력한다.

 

5. PUT

  • 기존의 객체의 정보를 수정하는 UPDATE 동작을 put 메서드를 통해 구현하자.
  • 함수에 @PutMapping을 추가한다.
@PutMapping("{VendorId}")
  • 프론트로부터 입력받은 CloudVendor를 인자로 받고, 이 클래스에 있는 cloudVendor 객체에 입력받은 값을 저장해준다.
public String updateCloudVendorDetails(@RequestBody CloudVendor cloudVendor)
{
    this.cloudVendor = cloudVendor;
    return "Cloud Vendor Updated Successfully";
}
  • 잘 update되었으면 string 타입의 메시지를 출력한다.

 

6. DELETE

  • 특정 id에 해당하는 객체 정보를 삭제하는 DELETE 동작을 Delete 메서드를 통해 구현하자.
  • 함수에 @DeleteMapping을 추가한다.
  • 특정 id에 대한 정보를 담은 경로를 요청받았을 경우, 해당 id의 객체를 삭제한다.
@DeleteMapping("{VendorId}")
  • 경로로 들어온 id는 인자에서 사용하고, 요청한 id의 객체를 삭제하기 위해, this. cloudVendor가 null을 가리키도록 한다.
public String deleteCloudVendorDetails(String vendorId)
{
    this.cloudVendor = null;
    return "Cloud Vendor Deleted Successfully";
}
  • 잘 delete되었으면 string 타입의 메시지를 출력한다.

 


프론트엔드를 구성하지 않았기 때문에, 실제로 값을 읽어오거나 할 수 없다. 따라서 POSTMAN 프로그램을 이용해서 직접 값을 json형태로 넣어주면서 CRUD가 잘 동작하는지 확인하였다.

 

일단 GET 메서드를 사용해보았다. 우리가 web에서 주소창에 입력하는 것처럼 똑같이 입력해주면 된다.

http://localhost:8080/cloudvendor/C1 경로를 통해서..

id가 C1인 객체에 대해서 조회해보려고 하였다.

 

아직 cloudvendor에 아무 값도 넣어 준적이 없기 때문에, 당연히 return 결과는 null이므로, 출력창에 아무것도 출력되지 않는 것을 확인할 수 있다.

그러나 잘 동작하였음은 200OK인 상태 코드를 통해 확인할 수 있다.

 

이제, POST 메서드를 사용하여, 값을 입력해보자.

 

실제로 프론트 단에서 값을 읽어올 수 없기 때문에, 위와 같이 요청 Body에 json형태로 vendor 정보를 입력해주었다.

json 형식은 {"이름":"값"} 쌍의 형태인 것을 잊지 말자.

여러 개의 쌍이 있을 경우 ,로 구분해 주어야 한다.

 

위와 같이 값을 입력하고 실행해보니, 아래 잘 create 되었다는 메시지가 출력되고, 200ok 상태임을 확인할 수 있다.

POST도 잘 동작한다.

 

이제 PUT 메서드를 이용해서, 프론트로부터 수정된 값을 받아서 vendor 정보를 수정해보자.

PUT의 경우 POST와 비슷한데, 특정 Id의 정보를 수정하기 위함이므로, url에 id 정보를 추가해주었다.

역시 JSON 형태로 받아올 것이고, 이전 정보에서 Address에 updated를 추가해 주었다.

실행 한 결과 잘 update되었다는 메시지가 출력되고, 200OK 상태인 것으로 보아 put 메서드도 잘 동작하는 것을 확인할 수 있다.

 

잘 수정되었는지 확인하려면 역시 get 메서드를 통해 반환된 값을 확인하면 된다.

 

잘 수정되었다!

 

이제 마지막으로 DELETE 메서드를 이용해 정보를 삭제해보자.

이 역시 특정 Id에 대한 정보를 삭제하기 위함이므로 url에 id정보를 함께 넘겨준다.

c3를 삭제한다. 

실행 결과 잘 delete되었다는 메시지가 출력되고, 200OK상태인 것을 통해, delete 메서드가 잘 동작했음을 확인할 수 있다.

 

잘 삭제 되었는지 get을 통해 확인해보자.

c3가 삭제되었기 때문에, get을 통해 불러도 아무것도 반환하지 않는 것을 확인할 수 있다.

 

이로써 간단한 CRUD를 구현해 보았고, 잘 동작하는 것을 확인하였다.

 

다음 회차↓↓↓

2023.11.11 - [Web Application/Backend] - [REST API] Spring Boot로 REST API CRUD 간단 구현 (2)

 

[REST API] Spring Boot로 REST API CRUD 간단 구현 (2)

지난 시간, 간단한 model을 생성하고, 해당 model을 클래스 내에서 직접 생성하고, 클라인언트로부터 받은 정보를 통해 CRUD를 구현해 보았다. ↓↓↓ 2023.11.08 - [Web Application/Backend] - [REST API] Spring Boot

im-gonna.tistory.com

 

반응형

+ Recent posts