728x90
📚 Today's TODO
[어제 한 것]
✅ 풀스택 GPT 코드 챌린지 제출 - QuizGPT
[오늘]
❌모든 개발자를 위한 HTTP웹 기본 지식 다 듣기
- ✅ 섹션 5. HTTP 메서드
- ✅ 섹션 6. HTTP 메서드 활용
- ✅ 섹션 7. HTTP 상태코드
- ▶️섹션 8. HTTP 헤더 1
📡 새로 알게 된 내용
- 멱등: 한번 호출하든 여러 번 호출하든 결과가 똑같다.
- POST 는 멱등이 아니다. 서버를 변경하는 것이여서 아예 대체하거나 삭제하지 않기 때문.
- 리소스의 ID가 클라이언트에 의해 지정되지 않습니다. 대신 서버가 생성합니다.
- 이게 포인트인데 PUT은 지정되어 있어서 딱 그것만 작업하는 반면에 POST는 ID가 식별되지 않아 같은 것이 여러 개 생길 수도 있다.
- 서버가 관리하는 Resource directory, 즉 서버가 resource의 URI를 관리하는 것을 Collection이라고 함
- 반면에 클라이언트가 관리하는 Resource directory 는 Store이라고 함
- 대부분 Collection이고 파일, 게시판 같은 경우에 Store을 사용
- POST는 Collection, PUT은 Store
- POST는 request 내용을 body에 넣고 GET을 쓰면 쿼리 파라미터로 넣어버림! GET은 조회할 때만 쓰기!
- multipart/form-data를 사용하면 자동으로 body부분을 나눠서(Multipart) body에 넣음
- HTML FORM은 GET, POST만 지원함
- Control URI: HTTP CRUD로만 해결하기 애매할 경우 동사로 된 리소스 경로 사용하는 것
- 📌 URI 설계 개념: https://restfulapi.net/resource-naming/
REST API URI Naming Conventions and Best Practices
In REST, having a strong and consistent REST resource naming strategy – will prove one of the best design decisions in the long term. Let's discuss.
restfulapi.net
- 상태 코드: 매우 다양하게 존재하지만 프로젝트 시 팀에서 몇 개만 쓰자고 합의하고 쓰는게 좋음
- 201 Created | 202 Accepted | 204 No Content
- 301, 308 영구 리다이렉트 | 302, 307, 303 일시 리다이렉트
- PRG(Post / Redirect / Get): 중복 주문을 방지하기 위해 POST 사용 후에 GET 으로 redirect
- 이렇게 하면 새로고침을 해도 결과 화면을 GET으로 조회
- 4xx, 5xx: 이 오류를 서버 개발자가 잘 지정해 두는 것이 중요하다. 어디의 오류인지 잘 해놔야 클라이언트 잘못인지, 서버 잘못인 지 구분 할 수 있기 때문
- 401 인증 문제, 403 Forbidden, 404 Not found
- 500 서버 문제, 503 서버 과부하 - 진짜 서버의 문제일 때만 발생시키기
🗃️ SQL 문제 - 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기
- Group By를 적용하지 않아 틀렸다가
- DURATION_TYPE을 WHERE에서 걸러서 틀렸다가
- START_DATE, END_DATE를 거르는 과정에서 틀렸었다.
더보기
SELECT C.CAR_ID, C.CAR_TYPE, FLOOR(C.DAILY_FEE * 30 * (1 - D.DISCOUNT_RATE / 100)) AS FEE
FROM CAR_RENTAL_COMPANY_CAR C
JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY R
ON C.CAR_ID = R. CAR_ID
JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN D
ON C.CAR_TYPE = D.CAR_TYPE AND
D.DURATION_TYPE = '30일 이상'
WHERE (C.CAR_TYPE = '세단' OR C.CAR_TYPE = 'SUV')
AND C.CAR_ID NOT IN (SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE NOT (END_DATE < '2022-11-01' OR
'2022-11-30' < START_DATE))
AND ((C.DAILY_FEE * 30 * (100 - D.DISCOUNT_RATE) / 100) BETWEEN 500000 AND 2000000 OR
(C.DAILY_FEE * 30) BETWEEN 500000 AND 2000000)
GROUP BY C.CAR_ID
ORDER BY
FEE DESC,
C.CAR_TYPE ASC,
C.CAR_ID DESC;
👻 오늘 하루 복기
저번 프젝할때 URI를 아주 엉망진창으로 했다는 것을 알게 되었다..ㅎㅎ 보고도 참아준 팀원들에게 미안함이..ㅠㅠㅠ
오늘 정말정말 공부가 안된 날이다 ㅠㅠㅠㅠㅠ 슬픔 미세먼지 때문인가.. ㅋㅋ
푹 쉬고 내일 다시 계획 좀 세우고 해야지
728x90
'TIL' 카테고리의 다른 글
TIL - 이분탐색, 백트래킹 (0) | 2025.01.22 |
---|---|
TIL - 웹 지식, reranking (1) | 2025.01.21 |
TIL - 웹 기본 지식 (0) | 2025.01.18 |
TIL - Servlet, Request, Response (0) | 2025.01.17 |
TIL - Servlet (0) | 2025.01.16 |