본문 바로가기

전체 글119

HTTP 메서드[HTTP API를 만들어보자] 요구사항 - 회원 정보 관리 API를 만들기 회원 목록 조회 회원 조회 회원 등록 회원 수정 회원 삭제 잘못된 API URI 설계 회원 목록 조회 /read-member-list 회원 조회 /read-member-by-id 회원 등록 /create-member 회원 수정 /update-member 회원 삭제 /delete-member 가장 중요한 것은 리소스 식별 API URI 고민 리소스의 의미는 뭘까? 회원을 등록하고 수정하고 조회하는게 리소스가 아님 ex) 미네랄을 조회하기 -> 회원이 리소스 회원이라는 개념 자체가 바로 리소스 리소스를 어떻게 식별하는게 좋을까? 회원을 등록하고 수정하고 조회하는 것을 모두 배제 회원이라는 리소스만 식별하면 된다. -> 회원 리소스를 URI에 매핑 API URI 설.. 2022. 11. 24.
HTTP 기본[HTTP 메시지] HTTP 메시지 구조 요청 메시지도 body 본문을 가질 수 있음 요청 메시지는 전송할 데이터가 없다면 CRLF 넣고 끝내도 됨 HTTP 공식 스펙 https://tools.ietf.org/html/rfc7230#section-3 시작 라인) 요청 메시지 Start-line -- Request-line / Status-line Request-line -- Method SP(공백) Request-Target SP(공백) HTTP-Version CRLF(엔터) HTTP Method (GET 조회) 종류 -- GET, POST, PUT, DELETE... 서버가 수행해야 할 동작 지정 GET -- 리소스 조회 POST -- 요청 내역 처리 Request-Target (요청 대상) -- /search?q=hel.. 2022. 11. 24.
HTTP 기본[비 연결성(connectionless)] 비 연결성 HTTP는 기본이 연결을 유지하지 않는 모델 일반적으로 초 단위의 이하의 빠른 속도로 응답 1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이하로 매우 작음 ex) 웹 브라우저에서 계속 연속해서 검색 버튼을 누르지는 않는다. 서버 자원을 매우 효율적으로 사용할 수 있음 연결을 유지하는 모델 여러 클라이언트의 연결을 유지한다면 서버의 자원이 계속 소모 클라이언트2, 클라이언트3이 요청을 안보내더라도 연결중이므로 자원을 계속 소모 연결을 유지하지 않는 모델 요청하고 응답할 때만 연결하고 종료 서버를 유지하는 자원을 최소한으로 줄일 수 있음 비 연결성의 한계와 극복 TCP/IP 연결을 새로 맺을 때마다 3 way handshake로 인한 시간이 추가 됨 웹 브라우.. 2022. 11. 23.
HTTP 기본[Stateful, Stateless] Stateful, Stateless 네트워크 프로토콜 클라이언트와 서버간의 통신하는 방식 Stateful(상태 유지) 서버가 클라이언트의 상태를 보존 서버가 클라이언트가 이전 단계에서 제공한 값을 보존하고 다음 단계에서도 가지고 있는 상태 장점 -- 상태를 보존하고 있기 때문에 통신이 중단되더라도 중단된 곳 부터 다시 시작할 수 있음 단점 -- 항상 같은 서버가 유지되어야 함 Stateless(무상태) 서버가 클라이언트의 상태를 보존하지 않음 서버가 클라이언트의 상태를 보존하지 않기 때문에 매번 요청에 모든 상태 값들을 전달해 줘야 함 장점 -- 서버가 클라이언트의 상태를 보존하지 않기 때문에 확장성이 좋음(스케일 아웃 - 수평 확장 유리) 단점 -- 상태 정보를 저장하지 않기 때문에 클라이언트 측에서 .. 2022. 11. 23.
HTTP 기본[클라이언트 서버 구조] 클라이언트 서버 구조 Request / Response 구조 클라이언트는 서버에 요청을 보내고, 응답을 대기 서버가 요청에 대한 결과를 만들어서 응답 양쪽이 독립적으로 진화 비즈니스 로직, 데이터 처리 -> 서버 UI/UX, 사용성 -> 클라이언트 이미지 출처 - https://www.inflearn.com/course/http-웹-네트워크 2022. 11. 23.
HTTP 기본[모든 것이 HTTP] HTTP HyperText Transfer Protocal W3(World Wide Web) 상에서 정보를 주고 받을 수 있는 프로토콜 HTTP 메시지에 모든 것을 전송 HTML, TEXT IMAGE, 음성, 영상, 파일 JSON, XML (API) 거의 모든 형태의 데이터 전송 가능 서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용 HTTP 역사 HTTP/0.9 (1991) -- GET 메서드만 지원, HTTP 헤더X HTTP/1.0 (1996) -- 메서드, 헤더 추가 HTTP/1.1 (1997) -- 가장 많이 사용, 우리에게 가장 중요한 버전 RFC2068 (1997) -> RFC2616 (1999) -> RFC7230~7235 (2014) HTTP/2 (2015) -- 성능 개선 HTTP/.. 2022. 11. 23.
Git Branch Branch : 분기된 가지(다른 차원) / 필요성 프로젝트를 하나 이상의 모습으로 관리해야 할 때 ex) 실배포용, 테스트서버용, 새로운 시도용 여러 작업들이 각각 독립되어 진행될 때 ex) 신기능 1, 신기능 2, 코드개선, 긴급수정... 각각의 차원에서 작업한 뒤 확정된 것을 메인 차원에 통합 Branch 생성/이동 git branch (새 브랜치명) -- 새 브랜치 생성 git switch -c (새 브랜치 명) -- 브랜치 생성과 동시에 이동 git switch br_nororo -- br_nororo브랜치로 이동 git branch -- 브랜치 목록 확인, 현재 브랜치 앞에 *이 붙음 Branch 이름변경/삭제 git branch -m (기존 브랜치명) (새 브랜치명) -- 브랜치명 변경 gi.. 2022. 11. 22.
Git에서 과거로 돌아가는 두 방식 / 커밋 삭제 RESET vs REVERT reset -- 원하는 시점으로 돌아간 뒤 이후 내역들을 삭제 (파일의 생성, 수정, 삭제 모두 과거로) 명령어 -- git reset --hard (돌아갈 커밋 hash code) 뒤에 커밋 hash code가 없으면 마지막 커밋을 가리킴 history도 같이 삭제 revert -- 되돌리기 원하는 시점의 커밋(취소할 커밋)만 거꾸로 실행 명령어 -- git revert (되돌릴 커밋 hash code) history에 취소한 내역 추가 명령어 -- git revert --no-commit (되돌릴 커밋 hash code) 커밋 되돌리고 add까지만 REBASE 브랜치 병합 전략 중 하나 원래 용도는 브랜치 병합이지만 특정 commit 내역 수정/삭제 할 때도 사용됨 브랜치.. 2022. 11. 22.
리눅스 vi(vim) 에디터 vi(vim) 명령어 vi(vim) -- 리눅스와 유닉스 시스템에 포함된 기본 텍스트 에디터 vi -- visual editor vim -- vi improved(향상된 vi) 이름에서 알 수 있듯이 vim이 vi보다 더 편함 대부분의 리눅스에서는 vi를 호출해도 vim이 실행되도록 내부적으로 alias 설정되어 있음 vi와 vim의 가장 큰 차이점은 순수한 vi만 설치되어 있다면 화살표 방향키가 아닌 h, j, k ,l로 커서를 이동 2022. 11. 22.