Controller/Service/Respository
Controller: 유저와 개발자의 소통 공간, 뷰와 연결되는 곳Service: 개발자의 생각 공간, 로직 적는 곳Repository: 개발자와 data 와의 소통 공간
@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)private final이고 getter가 있으면 클래스를 record 타입으로 변경 가능 record 클래스명(...fileds) 생성자
stream() 배열을 흘러가는 형태로 바꿔주는 처리 도구Stream // id에 따라 stores 리스트에서 Store 객체를 반환하는 메서드 예제
Optional<Store> first = Utils.stores.stream().filter(el->el.getId() == id).findFirst();
리소스(resource)를 꺼내주는데에 목적을 둔 api
GET POSTPUT(POST 기반) body ODELETE(GET 기반) body X| 전체 스토어를 가져온다 | `GET /stores` |
| 스토어 추가한다 | `POST /stores` |
| 스토어 안에 id=1 를 가져온다 | `GET /stores/1` |
| 스토어 안에 이름이 커피가 들어간 친구들 뽑아온다 | `GET /stores?name=커피&opentime=10` |
| 1번 스토어 이름을 커피로 바꾸고 싶다 | `PUT /stores/1` |
| 스토어 1번을 지운다 | `DELETE /stores/1` |
정리
- URL 복수형만 사용 (
/storex)- 명사만 사용 (
/stores/createx)- 소문자로 작성 (
/storesCreate->/store-create)- 언더바(_) 말고 하이픈(-)으로 작성 (
/store_create->/store-create)
private 필드로 선언되었으나, 이곳저곳에서 변경되어야 한다면public으로 변경 혹은 클래스 내부에서 제한된 조건으로 변경될 수 있도록 변경한다.final로 픽스하는게 좋다.