티스토리 뷰

반응형

오늘은 귀찮음을 이겨내고 지난번에 작성한 Spring Boot 에서 CURD하기를 이어서 작성해보겠습니다.

 

 

https://rlg1133.tistory.com/125

 

Spring boot) 프로젝트 생성부터 CRUD 작성하기(1)

JAVA version : 1.8 IDE : STS4 이번 게시글에서는 스프링 부트 프로젝트를 생성하는 법을 기록해놓겠습니다. 프로젝트 생성 우선 가장먼저 프로젝트를 생성하는 법을 알아야 합니다. 1. Spring Initiolizr 에

rlg1133.tistory.com

 

지난번 포스팅에서는 프로젝트를 생성하고 실행시켜보는 부분까지 진행을 했습니다. 

이번에는 직접 코드를 작성하고 포스트맨을 통해 잘 실행이 되는지 체크하는 부분을 진행해 보겠습니다.

 

우선 rest api는 GET, POST, PUT, PATCH, DELETE라는 HTTP method를 통해 Create, Read, Update, Delete 작업을 수행하기 때문에 하나씩 작업을 해보겠습니다.

 

우선  User라는 패키지 디렉토리를 생성합니다.

그리고 User 패키지 하위에 User.java, UserController.java, UserService.java 클래스를 각각 생성합니다.

 

User.java 클래스에는 유저의 간단한 정보인 id와 pw정보만 정의를 해두겠습니다.

 

User.java

package com.example.user;

package com.example.myspring.user;

import lombok.Data;

@Data
public class User {
	private String id;
	private String pw;
	
	public User(String id, String pw) {
		this.id = id;
		this.pw = pw;
	}
}

 

lombok을 임포트 해주시면 @Data 어노테이션을 사용할 수 있고 getter와 setter를 정의할 필요가 없어집니다.

 

UserServicr.java

package com.example.user;

package com.example.myspring.user;

import java.util.ArrayList;
import java.util.List;

@Service
public class UserService {

	private static List users = new ArrayList<>();
	
	//데이터베이스를 사용하지 않기때문에 기존 User의 목록을 불러오려면 더미 데이터를 넣어주어야 합니다.
	static {
		users.add(new User("id1", "pw1"));
		users.add(new User("id2", "pw1"));
		users.add(new User("id3", "pw1"));
	};
	
	//전체사용자 조회
	public List getAllUser(){
		return users;
	}
	
	//아이디를 통한 개별사용자 조회
	public User getUser(String id) {
		for(User user : users) {
			if(user.getId().equals(id)) {
				return user;
			}
		}
		return null;
	}
	
}

 

유저 조회를 위한 모델을 만든 다음엔 Service 클래스에 유저 조회 기능을 만들어줄 차례입니다. 위와같이 유저 목록에 세명의 유저를 넣어준 상태로 유저 전부를 리턴하는 함수와 아이디를 통해 유저 한명을 선택해 리턴하는 함수를 선언해주었습니다.

 

UserController.java

package com.example.user;

package com.example.myspring.user;

import java.util.List;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class UserController {
	private UserService userService;

	public UserController(UserService userService) {
		this.userService = userService;
	}
	
	//모든 유저를 불러오는 api
	@GetMapping(path = "/users")
	public List getAllUsers(){
		return userService.getAllUser();
	}
	
	//한명의 유저 정보를 불러오는 api 
	@GetMapping(path = "/user/{id}")
	public User getUser(@PathVariable String id) {
		return userService.getUser(id);
	}
	
}

 

Controller 클래스에서는 URL path를 정의해 어떠한 작업을 할지에 대해 정의해줍니다.

위와같이 작성을 한 후 서버를 실행시킵니다.

서버가 정상 실행이 되면 주소창에 localhost:8080/users 를 입력해줍니다.

 

위와같이 정상적으로 데이터가 나오는것을 볼 수 있습니다.

이번엔 아이디를 통해 유저 한명의 정보를 불러와보겠습니다.

주소창에 localhost:8080/user/id1 를 입력해줍니다. 

값이 정상적으로 출력되는것을 볼 수 있습니다. 

GET을 통해 DTO, Controller, Service의 사용방법을 알았으니 다음은 POST를 통한 데이터 Create와 PUT을 통한 Update, 그리고 DELETE를 해볼겁니다.

 

우선 아까 작성한 UserService.java 클래스에 아래 코드를 추가해줍니다.

 

UserService.java

.
.
.
	//유저정보를 추가합니다. 
	public void addUser(String id, String pw) {
		users.add(new User(id, pw));
	}
	
	//검색한 유저의 pw를 수정합니다.
	public void updateUser(String id, String modPw) {
		for(User user : users) {
			if(user.getId().equals(id)) {
				user.setPw(modPw);
			}
		}
	}
	
	//아이디로 유저를 검색해 삭제합니다.
	public void deleteUser(String id) {
		java.util.Iterator iterator = users.iterator();
		while(iterator.hasNext()) {
			User user = iterator.next();
			
			if(user.getId().equals(id)) {
				iterator.remove();
			}
		}
	}

 

그리고 UserController.java 클래스에도 다음과 같은 코드를 추가해줍니다.

 

UserController.java

.
.
.
	//유저 등록 api
	@PostMapping(path = "/user/{id}/{pw}")
	public void addUser(@PathVariable String id, @PathVariable String pw) {
		userService.addUser(id, pw);
	}
	
	//유저 정보 수정 api
	@PutMapping(path = "/user/{id}/{pw}")
	public void updateUser(@PathVariable String id, @PathVariable String pw) {
		userService.updateUser(id, pw);
	}
	
	//유저 정보 삭제 api
	@DeleteMapping(path = "/user/{id}")
	public void deleteUser(@PathVariable String id) {
		userService.deleteUser(id);
	}

 

 

이제 PostMan을 실행하고 HTTP method는 POST, url은 localhost:8080/user/id4/pw4 로 설정하고 실행해봅니다.

 

status는 200 ok가 떨어졌네요 성공을 했을때 나오는 코드입니다. 

//Create시에는 원래 201 created가 나와야하지만 HTTP response에 대해서는 나중에 다루도록 하겠습니다.

 

생성이 되었으니 이제 다시 /users를 호출해 전체 사용자목록을 불러와봅니다.

 

 

정상적으로 추가가 된것을 볼 수 있습니다.

이번에는 수정을 위해 HTTP method는 PUT, url은 localhost:8080/user/id4/modpw4 로 두고 실행해봅니다.

정상 실행이 되었고 다시 유저 전체를 불러와보면

수정이 정상적으로 된것을 볼 수 있습니다.

마지막으로 Delete를 해볼텐데 HTTP method를 DELETE, url을 localhost:8080/id3 으로 두고 실행해봅니다. 

정상적으로 실행이 되었고 다시한번 유저 전체 목록을 불러와보면

 

id3을 가진 유저가 사라진것을 볼 수 있습니다. 

 

이렇듯 이번 포스팅에서는 간단하게 CRUD를 작성해봤습니다.

//실제로는 유저정보를 저렇게 심플하게 사용하지 않고 사용해서도 안됩니다 ㅎㅎ

 

다음 게시글에서는 더 심화작업을 다뤄보도록 하겠습니다. 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함