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
POST
PUT
(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 복수형만 사용 (
/store
x)- 명사만 사용 (
/stores/create
x)- 소문자로 작성 (
/storesCreate
->/store-create
)- 언더바(_) 말고 하이픈(-)으로 작성 (
/store_create
->/store-create
)
private
필드로 선언되었으나, 이곳저곳에서 변경되어야 한다면public
으로 변경 혹은 클래스 내부에서 제한된 조건으로 변경될 수 있도록 변경한다.final
로 픽스하는게 좋다.