본문 바로가기
스터디/인프런

[인프런 워밍업 스터디 클럽 0기- BE] 2일차 강의 내용 정리

by 행복한라이언 2024. 2. 20.
728x90
반응형

1.  (6강) POST API 개발하고 테스트하기

  • POST에서 Body로 데이터를 어떻게 받을까?
    • JSON - key, value 쌍으로 이루어진 데이터
  • @RequestBody
    • HTTP Body로 들어오는 JSON을 자바 객체인 CalculatorMultiplyRequest로 바꿔주는 역할을 한다.
    • JSON의 key와 DTO의 필드명은 일치해야한다.
    @PostMapping("/multiply")
    public int multiplyTwoNumbers(@RequestBody CalculatorMultiplyRequest request) {
        return request.getNumber1() * request.getNumber2();
    }


2. (7강) 유서 생성 API 개발

  • 도서관리 애플리케이션의 요구사항
    • 사용자
      • 도서관의 사용자를 등록할 수 있다.(이름 필수, 나이 선택)
      • 도서관 사용자의 목록을 볼 수 있다.
      • 도서관 사용자 이름을 업데이트 할 수 있다.
      • 도서관 사용자를 삭제할 수 있다.
      • 도서관에 책을 등록 및 삭제할 수 있다.
      • 사용자가 책을 빌릴 수 있다.
        • 대출중인 책은 대출이 불가하다
      • 사용자는 책을 반납할 수 있다.
  • 도서관 사용자 등록 API 명세
    • HTTP Method: POST
    • HTTP Path: /user
    • HTTP Body(JSON)
      • name: String (null불가) / age: Integer
    • 결과반환 필요없음.
    @PostMapping("/user")
    public void saveUser(@RequestBody UserCreateRequest request) {
        users.add(new User(request.getName(), request.getAge()));
    }
  • DTO: UserCreateRequest - (String) name과 (Integer) age 정보를 담은 DTO 생성
  • List<User> 에 User를 저장하는데 DB를 사용하지는 않는다. 유저정보가 메모리에 저장되어 실행될 때마다 User정보가 사라지는 문제가 발생한다. 따라서 DB를 활용해야하는데 이는 다음 Section에서 다룰 것으로 예상된다. 

  • 도서관 사용자 조회 API 명세
    • HTTP Method: GET
    • HTTP Path: /user
    • 쿼리: 없음
    • 결과반환: Id(Long) / name(String) / age(Integer)
      • Controller에서 getter가 있는 객체를 반환하면 JSON형식으로 ResponseBody가 반환된다.
      • Id: 유저별로 겹치지 않치지 않는 유일한 번호, 기본키(Primary Key)에 해당한다.
    @GetMapping("/user")
    public List<UserResponse> getUsers() {
        List<UserResponse> responses = new ArrayList<>();
        for (int id = 0; id < users.size(); id++) {
            responses.add(new UserResponse(id + 1, users.get(id)));
        }
        return responses;
    }
  • DTO: UserResponse - (long) id, (String) name, (Integer) age를 담은 DTO 생성
  • id의 경우 기본키에 해당하는데 지금은 DB를 사용하지 않고 리스트에 임시적으로 저장해놓고 있기 때문에  인덱스를 기준으로 id를 설정해놓았다.

3. (9강) Section1 정리

  • 스프링 프로젝트 시작하는 방법과 실행방법
  • 네트워크, IP, 도메인, 포트, HTTP 요청과 응답구조, 클라이언트-서버구조, API 기초 지식
  • SpringBoot를 이용해 GET API, POST API 만드는방법 학습
728x90
반응형