반응형

저번에 해보았던 회원 등록에 이어서 삭제까지 해보고자 한다.

드디어 처음 DeleteMapping 이다. 

 

우선 서비스 클래스를 보면 

 

Iterator로 저번에 만들어둔 list 타입을 불러와보자 

user 객체로 iterator.next()로 한개 씩 불러보자 

 

그다음 while hasNext로 for문과 같은 경우이다. 

그다음 if문을 통해 불러온 아이디와 발견한 id가 같다면 

유저를 리턴한다. 

 

@DeleteMapping("/users/{id}")
public void deleteUser(@PathVariable int id){
    User user = service.deleteById(id);

    if(user ==  null){
        throw new UserNotFoundExeception(String.format(id + " not pound"));
    }

}

DelMapping 으로 User/{id}로 pathVariavble을 해준다. 

user를 불러와서 service객체에 접근한다. 

 

그리고 서비스에서 불러온 값을 다시 리턴해준다. 

 

여기서 1번 데이터를 지워보자

 

딜리트로 신호를 보내보자 

 

삭제가 잘 되었다!

반응형
반응형

저번에 회원관리중 회원 선택 후 에 셀렉트 하는 것과 회원 전체 리스트를 json으로 받는 방법에 대해 서술하였다. 

이번에는 회원 추가 즉 insert를 할 것이다. 

아직 데이터베이스 즉 JPA를 하지 않아 메모리상의 데이터를 이용하려고 한다. 

 

시작해보자 

 

저번에 user라는 data객체와 service 그리고 controller를 만들었다. 

 

private static int usersCount = 3;

    public User save(User user){
        if(user.getId()== null){
            user.setId(++usersCount);
        }
        users.add(user);
        return user;
    }

우선 데이터가 3건이 기 떄문에 

userCount라는 변수를 만들어 데이터가 추가 될때마다 

++연산자로 한개씩 올려주려고 한다. 

그 후 users를 insert(add)를 하려고 한다. 

 

    @PostMapping("/users")
    public ResponseEntity<User> createUser(@RequestBody User user){
        User savedUser = service.save(user);

        URI location =  ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}")
                .buildAndExpand(savedUser.getId()).toUri();

        return ResponseEntity.created(location).build();
    }

createUser를 만들어 주고 

savedUser라는 변수를 만들어 서비스와 연결해준다. 

 

그 후 URI 를 사용하여 데이터를 전달해주면 

리턴값으로 

/users/{id} 값이 나오게 된다. 

 

즉 URI 값으로 바로 이용이 가능하다.

 

포스트맨 으로 한번 해보자 

 

 new_User 라고 name값을 추가해주고

즉 JSON으로 데이터를 전달해준다. 

post로 던져준다.

 

 

아까 만들어둔 location 값이 url로 만들어 진 것을 볼 수 있다. 

 

저 url로 접속을 해보면 

 

GET으로 접속을 해보면 아까 추가한 데이터가 추가 되었다!

 

 

반응형
반응형

다음에는 회원번호를 사용하여 PathVariable을 사용하여 

/users/{id} 이런식으로 데이터를 받아

2번이면 

id : 2

name : seok

 

이런식으로 데이터를 받아와보자 

우선 서비스 객체를 보자 

    public User findOne(int id){
        for(User user : users){
            if(user.getId() == id){
                return user;
            }
        }
        return null;
    }

 

save라는 메소드를 사용했다. 

우선 id를 비교하여 데이가 있다면 해당 user를 비교하여 데이터가 있다면

user를 리턴해준다.

만약 데이터가 없다면 null을 반영한다. 

 

@GetMapping("/users/{id}")
public User retrieveUser(@PathVariable int id){
    return service.findOne(id);
}

 

그 후 pathvariable을 사용하여 int를 서비스로 넘겨 비교한 후 클라이언트에게 

가져온 아이디를 리턴한다. 

 

2번 데이터를 리턴해보자 

 

 

이렇게 포스트맨으로  2번 데이터를 받아올 수 있다. 

만약 없는 데이터가 오면 null이 올것이다. 

 

다음에는 글 등록을 해보자

반응형
반응형

Rest API을 연습해보고자 한다

현재는 Get + POST만 사용했는데

Put과 Delete를 쓰려고 한다. 

 

 한번 사용해보자 

 

우선 데이터베이스를 쓰지 않고 메모리에 저장하는 형식으로 사용해보고자 한다. 

import java.util.Date;

@Data
@AllArgsConstructor
public class User {
    private Integer id;
    private String name;
    private Date joinDate;
}

우선 모델객체를 생성해주고 Lombok을 사용하려고 한다. 

 

그 후 service 객체를 생성해보자 

 

그 후 데이터 베이스를 사용하지 않기 떄문에 

실행과 동시에 반영이 가능한 static 변수를 사용하여 

List 타입을 만들고 id 1,2,3을 만들어서 기본 데이터 모델을 사용하려고 한다. 

public class UserDAOService {
    private static List<User> users = new ArrayList<>();
    private static int usersCount = 3;

    static {
        users.add(new User(1,"Moon", new Date()));
        users.add(new User(2,"Seok", new Date()));
        users.add(new User(3,"Huyn", new Date()));
    }

먼저 findAll 이라는 생성하여 위 데이터를 Rest api 방식을 사용하여 출력을 하여보자 

 

    public List<User> findAll(){
        return users;
    }

그 다음 컨트롤러를 사용해보자 

 

@RestController
public class userController {
    @Autowired
    private UserDAOService service;

    @GetMapping("/users")
    public List<User> retrieveAllusers(){
        return service.findAll();
    }

리스트 타입으로 GET방식으로 받아보자 

 

다음은 포스트 맨으로 

locallhost:8989/users 로 접속을 해보자

 

이런식으로 데이터를 잘 받아 오는 것을 알 수 있다. 

 

반응형

+ Recent posts