2020. 4. 2. 18:46ㆍ프로그래밍/프로그래밍 이것저것
#HTTP
HTTP란
Hyper Text Transfer Protocol
하이퍼텍스트를 전송하는 규약
##하이퍼텍스트
텍스트를 초월
문서의 연결성 + 서식 넣을 수 있음 (a태그같은 마크업랭귀지)
##텍스트
는 문자
##하이퍼링크
연결성
문서와 문서 연결
#Transfer Protocol
##Transfer
전송
##이메일은 SMTP
Simple Mail Transfer Protocl
이메일 전송 규약
##이메일 특징
발신자 수신자 제목 내용
잘 주고받을라고 규약 만듦
##HTTP 프로토콜
이메일은 개인과 개인임
어쨌든 내가 1000명한테 보내고 싶으면 1000명한테 메일써야함... 무리무리
서버에 띄워놓고 알아서 가져가게 하면 좋겠음
그래서 만든거.
배포자는 1명이지만 받는사람은 여럿
내가 주소를 열면 사람들이 그 주소로 들어와서 볼수있음(배포)
HTTP 프로토콜은 이걸 해결하려고 만든거
##HTTP 주소 = 리소스
HTTP 주소를 리소스라고 말함
가져갈 자원이 여기 있으니까
하나의 서버에서 많은 사람에게 배포하기 위한 솔루션임
##HTTP request 메소드
식당
식당에 가서 주문을 함 (무슨 요리 주세요) = GET 요청
스테이크 1인분이면 URL은 스테이크/1
응답으로 스테이크 1인분이 옴 = Response
은행
은행 계좌 지워주세요 = DELETE 요청
DELETE/내계좌
은행에 돈 넣고싶음 = POST 요청
은행에 돈을 넣으려면 내가 돈을 담아서 줘야함
그냥 요청만 보내고 싶을 때는 GET으로 충분하지만, 안에 내용물을 넣어서 줘야하면 POST를 씀
내가 어느 주소, 자원에 접근하는건 GET으로 충분하지만..
#REST
이런 규칙을 더 엄격하게 쓰자고 해서 REST라는게 나옴
HTTP가 처음 나왔을 떈 좀 허술했음.
사람들이 아무렇게나 함
어차피 돈도 GET 주소에다가 넣어버리면 돈을 저금할 수 있다고 생각하고 막 그렇게 짜버림
그럼 돈이 얼마인지 등의 중요한 정보들이 노출이 돼버림
GET은 공개된 상태로 요청을 보내는게 기본이라서.
그리고 글자수 제한도 있음
웨이터한테 주문할때 엄청 복잡하게 주문하면 힘드니까
GET으로도 주소 뒤에 파라미터를 막 넣으면 정보를 넣을 수 있기 때문에 POST로 보낼걸 GET으로 잘못 많이 보냈었음
그래서 로이필딩이라는 사람이 HTTP는 원래 이런 의도로 만들었고 이렇게 써야한다고(RESTful 하게 써야한다고) REST라는 용어를 정의했음
그 내용이 결국 HTTP를 (스펙에 맞춰) 바르게 쓰자임
엄격하게 주소를 만들고 엄격하게 방식을 사용하고
##RESTful 하다는건
어떤 주소가 정확하게 어떤 리소스에 접근할 수 있는 유일한 주소여야 하고
목록을 나타내는 주소는 어떤 모양이여야 하고
그 목록에다가 POST 요청을 하면 그 목록에 아이템이 추가가 돼야하고
아이템 주소에서 PUT이나 DELETE를 해야하고
등등의 팍팍한 규칙들을 지켜야하는거
##내가 REST 라이브러리를 썼는데 RESTful 하지 않게 잘못 사용하면 생기는 문제
REST에 맞춰서 만든 다른 프로그램들이 작동을 안함
REST니까 새로 생성할땐 POST라고 생각하고 보냈는데 GET으로 썼으면 작동을안함
'프로그래밍 > 프로그래밍 이것저것' 카테고리의 다른 글
.gitignore 파일 쉽게 만들기 (0) | 2020.05.06 |
---|---|
[Zappa] zappa-django-utils를 이용한 stage별 유저만들기 create_admin_user (0) | 2020.04.20 |
협정 세계시 UTC, 그리니치 평균시 GMT (0) | 2020.02.19 |
[Visualstudio] 마크다운 -> PPT 변환 툴 'Marp for VS Code' (0) | 2020.02.14 |
[Lambda]로컬 os.environ의 변수를 사용할 수 있도록 serverless.yml 설정 (0) | 2020.02.10 |