Spring2

CharmingL·2024년 10월 10일
1

한경붙캠

목록 보기
4/5

Controller / Service / Respository

  • Controller: 유저와 개발자의 소통 공간, 뷰와 연결되는 곳
  • Service: 개발자의 생각 공간, 로직 적는 곳
  • Repository: 개발자와 data 와의 소통 공간

Annotation

  • @RequestMapping(value="/java", method = RequestMethod.GET)
    == @GetMapping("/java") // 나머지 메서드 모두 마찬가지 PostMapping, ...

  • @ResponseBody : 리턴하는 텍스트를 화면에 렌더링
    Controller +@ResponseBody = @RestController

  • @PathVariable

  // 스토어 Id
    @GetMapping("/{id}") // 아래 인자에 들어간 변수명과 일치해야함
    public Store getStoreById(@PathVariable int id) {
        ...
    }
  • @ResponseStatus(HttpStatus.CREATED)

Record & Stream

Record

  • 모든 필드가 private final이고 getter가 있으면 클래스를 record 타입으로 변경 가능
  record 클래스명(...fileds) 생성자

Stream

  • stream() 배열을 흘러가는 형태로 바꿔주는 처리 도구
    기존에 for문을 통해 처리하던 작업들의 가독성을 높일 수는 있지만 하지만 성능은 더 나쁘다.
    반환타입은 Stream
  // id에 따라 stores 리스트에서 Store 객체를 반환하는 메서드 예제
  Optional<Store> first = Utils.stores.stream().filter(el->el.getId() == id).findFirst();

RESTful API

리소스(resource)를 꺼내주는데에 목적을 둔 api

  • endpoint
  • method
    • GET
    • POST
    • PUT(POST 기반) body O
    • DELETE(GET 기반) body X
    • [PATCH] 전에 있는 놈을 변경

      전체 스토어를 가져온다`GET /stores`
      스토어 추가한다`POST /stores`
      스토어 안에 id=1 를 가져온다 `GET /stores/1`
      스토어 안에 이름이 커피가 들어간 친구들 뽑아온다`GET /stores?name=커피&opentime=10`
      1번 스토어 이름을 커피로 바꾸고 싶다`PUT /stores/1`
      스토어 1번을 지운다`DELETE /stores/1`

정리

  1. URL 복수형만 사용 (/store x)
  2. 명사만 사용 (/stores/create x)
  3. 소문자로 작성 (/storesCreate -> /store-create)
  4. 언더바(_) 말고 하이픈(-)으로 작성 (/store_create -> /store-create)

status code

  • 100 ~ 200 socket
  • 200 ~ 300 http 통신(성공)
  • 300 ~ 400 html을 사용할 때 (Found, Redirect)
  • 400 ~ 500 클라이언트 실수 (404 Not found, 401 Unauthorization)
  • 500 ~ 600 서버측 실수 (500 Internal server error)

자잘한 팁

  • 클래스 필드에 대한 변경점은 많은 곳에서 열리는 것을 최대한 지양하도록 한다.
    • private 필드로 선언되었으나, 이곳저곳에서 변경되어야 한다면
      public으로 변경 혹은 클래스 내부에서 제한된 조건으로 변경될 수 있도록 변경한다.
    • 변경될 일이 없는 필드는 final로 픽스하는게 좋다.
profile
내 빈틈을, 조금씩 천천히!! ٩(•᎑•)✦

0개의 댓글