2024.12.27 - [웹 개발 공부하기] - [12.27] 좋아요 추가 API 에 jwt 구현 해보기😲 jwt를 사용하다보면 가끔 만나는 오류이다.하지만 500 에러인 만큼 백엔드에게 치명적인 오류이다...500 에러는 그냥 무조건 백엔드 탓이기 때문이다 😂그러니 절대 절대 만나면 안될... 그런 오류다 ㅠㅠ500 에러가 떴다고 해서 서버가 꺼지진 않는다. 그래도.. 사용자가 만나면 굉장히 당황할 만한 그런 에러이다. jwt expired를 알아보기 위해, 유효기간이 1분인 토큰을 발행해서 검증을 해보았다.TokenExpriedError 라고 적히고, jwt expired 라는 오류가 뜬다.그리고 무시무시한 500 에러가 뜬다.말 그대로.. 유효기간이 지난 Token이야. 못 받아줘! 라는 것이다..
원래 좋아요 추가 API엔 jwt 를 제외하고 로직을 짰었다.이번엔 jwt 구현까지 해보려한다.우선, 가장 상단에 jwt 를 require 해주고, dotenv역시 같이 require 해준다.그 이후, dotenv.config();를 적어준다. 그 다음, req가 Authorization으로 jwt를 보내줘야 한다.let receivedJwt = req.headers["authorization"];console.log("received jwt : ", receivedJwt); req의 header에서 authorization 으로 꺼낸다.꺼내면 jwt가 튀어나올 것이다. 이것을 receivedJwt 라는 변수에 담아줄 것이다.console창으로 확인을 해보기 위해 console.log도 찍어줬다. 그 이..
2024.12.18 - [웹 개발 공부하기] - [12.18] 결제(주문)하기 API 구현해보기🤔2024.12.19 - [웹 개발 공부하기] - [12.19] 논 블로킹 I/O 때문에 순서가 바뀐다고?🤔2024.12.19 - [웹 개발 공부하기] - [12.19] async&await으로 순서를 조종해보자📢2024.12.20 - [웹 개발 공부하기] - [12.20] 결제(주문)하기 API 진짜 끝 진짜 진짜 끝!!🤣 드디어 결제(주문)하기 API가 끝났으니, 주문 목록(내역) 조회 API와 주문 상세 조회 API 를 해보려한다.일단 Method가 GET 인 만큼 엄청 어려운 편은 아니라 금방 끝날 것 같다.조회인 만큼 sql은 SELECT가 될 거고, orders 테이블과 delivery 테이블..
2024.12.18 - [웹 개발 공부하기] - [12.18] 결제(주문)하기 API 구현해보기🤔2024.12.19 - [웹 개발 공부하기] - [12.19] 논 블로킹 I/O 때문에 순서가 바뀐다고?🤔2024.12.19 - [웹 개발 공부하기] - [12.19] async&await으로 순서를 조종해보자📢 이제 코드를 전체 다 주석을 풀고 async&await을 사용한 만큼 사용법에 맞게 코드를 어느정도 수정한 후,테스트를 해보기 위해 돌려봤다!Could not get response 가 떴다.역시 한 번에 잘 되리란 법은 없군.. 하고 콘솔창을 좀 보러갔다.뭐시기저시기.. undefined 다. 라는 것 같은데...[results] = await conn.query(sql, [values]); ..
2024.12.19 - [웹 개발 공부하기] - [12.19] 논 블로킹 I/O 때문에 순서가 바뀐다고?🤔 node.js의 특징 때문에 순서가 바뀔 수도 있다는 것을 알게되었다.그래서 undefined가 나왔군.. 잡았다 요놈! 그럼 지금까지 쓴 conn.query를 promise 객체로 감싸주면 되겠군... 이라고 생각했지만구글링을 해보니 생각보다 promise 객체를 사람들이 안...쓴다?엥? 그럼 async&await을 어떻게 쓰는거지? ;; 싶었다. 사실 mysql에서는 쿼리를 promise 객체로 제공을 할 수 있었다.promise 객체로 따로 안 감싸도 모든 쿼리가 promise 객체로 감쌀 수 있는 방법이 있다.그건... npmjs.com 에서 아주 잘 알려주고 있다😀 많은 방법 중 내가..
2024.12.18 - [웹 개발 공부하기] - [12.18] 결제(주문)하기 API 구현해보기🤔 어제 했던 결제(주문)API 에서 문제가 발생했다!테스트하면서 이전에 테스트한 conn.query는 주석으로 바꿔놓고 테스트를 했었다.그래서 주석을 다 풀고 한 번 포스트맨을 돌려봤더니...400 Bad Request가 떴다...그리고 워크벤치를 확인해봤더니.. delivery 테이블의 데이터만 잘 들어간 걸 확인할 수 있었다.let delivery_id;let order_id;let sql = `INSERT INTO delivery (address, receiver, contact) VALUES (?, ?, ?)`;let values = [delivery.address, delivery.receiver,..
최종적으로 diagrma이 완성됐다!이렇게보니 정말.. 사용해야할 데이터가 많아 보인다 🙄처음에 API 설계할 때와는 좀 다른 듯 하다.. 역시 하면서 점점 바뀐다는 게 사실이었다 😥 이번엔 결제(주문)하기 API 구현할 예정이다!사용할 테이블은 orders / orderedBook / delivery 테이블이다.Foreign key도 diagram 처럼 워크벤치로 미리 작업을 해놓은 상태다.결제 API 설계는 이렇게 했었다.REQ에서 items(상품목록)의 데이터들은 orderedBook 테이블에 insert를 할 것이고,delivery(배송정보) 데이터들은 delivery 테이블에 insert를 할 예정이다.totalQuantity, totalPrice, user_id, firstBookTitle..
우선, 장바구니 API를 구현하면서 문제가 있었다.워크벤치에서 cartItems(장바구니) 테이블을 만들면서 Foreign Key 설정 중 문제였다.Foreign Key Name과 Index Name이 중복이 되어서 그런 거였다..그래서 간단하게 fk 제약조건 이름을 지었다. [ fk_기준 테이블명_참조테이블명_참조키 ]ex) cartItems.user_id > users.id => fk_cartItems_users_idex) likes.user_id > users.id => fk_likes_users_id 이렇게 만들기로 규칙을 만들었다. 이전에 만든 테이블들은 지나가고, cartItems 테이블부터 사용할 것이다.cartItems 테이블을 생성했으니, 이제 본격적으로 API 구현을 해보려한다👍 ..
2024.12.16 - [웹 개발 공부하기] - [12.16] 좋아요 API 구현해보기😍 자, 이제 좋아요 기능을 구현해봤으니 좋아요 수를 나타내고 좋아요 여부도 나타내보고자 한다. 💥 좋아요 수 구하기liked_book_id 가 1인 데이터를 보여줘. 라는 뜻이다.그럼 총 3개의 행이 나오는 걸 볼 수 있는데, 이 갯수만 보고싶을 땐 어떡해야할까?바로, count라는 함수를 붙여주면된다. 조건에 만족하는 행의 갯수를 알아서 계산해주는 걸 볼 수 있다. 굿👍 그럼 좋아요 갯수를 세고 books 테이블에 컬럼 추가해서 출력을 해보겠다!SELECT *, (SELECT count(*) FROM likes WHERE liked_book_id=books.id) AS likes FROM books; * 뒤에..
다이어그램에서 likes 테이블을 생성해, user_id와 liked_book_id의 Foreign Key 설정을 해준다.1명의 유저가 다양하게 좋아요 를 누를 수 있기 때문에 1:N 의 관계를 가질 것이다.그럼 이제, 워크벤치에서도 똑같이 테이블을 생성한 뒤, Foreign Key 설정을 해주겠다.워크벤치에서 likes 테이블을 생성한 뒤, user_id와 liked_book_id에 Foreign Key를 설정해준다. 다른 API와 동일하게 LikeController.js 를 만든 후, 그 안에 로직을 짜려고 한다.likes.js에는 말 그대로 router가 경로만 알려주게끔 만들었다. 💥 좋아요 추가 API 구현const addLike = (req,res) => { const {id} = re..