TIL

74일차(퀴즈 내주기)

haedal-uni 2021. 11. 25. 23:36
728x90

팀원과 Sping 02 - Naver api 코드 흐름만 파악 한 후 CRUD 문제를 내서 각자 풀어보기로 했다.

 

Spring01 memo api를 참고했다.

 

 

 

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>

 

 

728x90

'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