팀원과 Sping 02 - Naver api 코드 흐름만 파악 한 후 CRUD 문제를 내서 각자 풀어보기로 했다.
Spring01 memo api를 참고해서 문제를 작성했다.
문제는 아래와 같다.
멤버관리(id, 이름, 나이) API
기능 | Method | URL | Return |
멤버 등록 | POST | api/members/add | Member |
멤버 조회 | GET | api/members | List<Member> |
멤버 검색 | GET | api/search/{id} | Long |
멤버 이름/나이 수정 | PUT | api/members/{id} | Long |
멤버 퇴소 | DELETE | api/members/{id} | Long |
기존에 작성한 코드를 참고하여 최대한 안보고 작성하려고 했다.
아래는 빨간 줄이 뜬 코드를 고친 과정이다.
//Read /// 초기모델
@GetMapping("/api/search/{id}")
public List<Member> getMemberid(@PathVariable Long id) {
memberRepository.getById(id);
return id;
}
처음에 위와 같이 작성했을 때 List<Member>에서 오류가 떴다.
추천하는데로 고쳤더니 아래 코드와 같이 Long으로 바뀌어졌다.
알고보니 return 값이 id이기 때문에 자료형을 Long으로 적어줘야하는 것 같다.
//Read
@GetMapping("/api/search/{id}")
public Long getMemberid(@PathVariable Long id) {
memberRepository.getById(id);
return id;
}
@Autowired
public MemberController(MemberRepository memberRepository, MemberService memberService) {
this.memberRepository = memberRepository;
// 멤버 변수 생성
this.memberService = memberService;
}
위 코드가 @RequiredArgsConstructor으로 대체 할 수 있다.
위 코드를 그냥 복붙한 후 @RequiredArgsConstructor 를 적었더니 오류가 떴었다.
코드를 다 작성하고 실행을 시켰는데 아래와 같이 에러가 떴다.
🤔 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
로그에서는 에러가 없었는데 실행이 안되서 뭐가 문제인지 파악을 못했다.
이 전에는 흐름을 잡기가 어려웠는데 이젠 흐름을 잡으니깐 이 코드가 정확히 뭐하는 얘인지를 파악을 못해서
에러 잡는게 어렵다는게 지금 현재로써의 문제점인 것 같다.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
팀원과 함께 오류가 난 것을 살펴보니 @RestController를 적지 않아서 생긴 것이었다.
💡
@RestController는 Spring MVC Controlle에 @ResponseBody가 추가된 것이다.
RestController의 주용도는 Json 형태로 객체 데이터를 반환하는 것이다.
객체만을 반환하고 객체 데이터는 JSON 또는 XML 형식으로 HTTP 응답에 담아서 전송
출처: https://mangkyu.tistory.com/49 [MangKyu's Diary]
input type=text가 1개만 있으면 submit 된다.
아래 코드를 실행한다.
<!-- 주소 검색 -->
<div class="search-wrapper">
<form>
<h6> 위치 등록하기</h6>
<input type="text" name="focus" required class="search-box"
placeholder="Enter search term"/>
<button class="close-icon" type="reset" ></button>
</form>
</div>
검색창에 검색을 할 때 엔터를 치면 새로고침이 된다.
왜 자동으로 새로고침이 될까?
자바스크립트로 작성한 코드가 아니라 온전히 html과 css뿐인데 말이다.
why??
form 태그 안에 input(type=text) 태그가 한 개 들어있을 때,
엔터를 누르면 자동으로 submit되는 현상이 발생해서 화면이 새로고침 된다.
출처 : <[html]input text에서 엔터누를 때 새로고침>, https://ddulgi.tistory.com/22
form 태그 대신 div 태그를 작성해 주면 엔터를 입력 시 새로고침으로 넘어가지 않는다.
<!-- 주소 검색 -->
<div class="search-wrapper">
<div>
<h6> 위치 등록하기</h6>
<input type="text" name="focus" required class="search-box"
placeholder="Enter search term"/>
<button class="close-icon" type="reset" ></button>
</div>
</div>
'TIL' 카테고리의 다른 글
78일차 (0) | 2021.11.30 |
---|---|
75일차(.gitignore) (0) | 2021.11.26 |
73일차 - == 와 === 의 차이점, Spring (0) | 2021.11.24 |
72일차 _ Spring-1 페어프로그래밍 (0) | 2021.11.24 |
71일차 (0) | 2021.11.23 |