본문 바로가기
개발 저장소/Python&Django

[1일차] 웹프로그래밍의 이해

by 팡삼이 2016. 3. 2.

웹프로그램 구성 

클라이언트 - 서버

웹프로그래밍이란 간단하게 말하면 HTTP 프로토콜로 통신하는 클라이언트와 서버를 개발하는것


웹브라우저 ->네이버 접속 시도 -> 네이버 서버 응답-> 네이버접속


브러우저 이외에도 웹서버에 요청을 보내는 웹 클라이언트는 다양하게 만들수 있으며 네가지로 분류할 수 있음

웹브라우저를 사용하여 요청

리눅스 curl명령을 사용하여 요청

Telnet을 사용하여 요청

직접만든 클라이언트로 요청


HTTL 처리방식

GET방식은 지정한 URL의 정보를 가져오는 메소드로 브러우저를 이용해서 서버로부터 웹페이지, 이미지, 동영상 등을 가져온다고 할 때 수많은 GET 방식의 요청을 사용하게 됩니다.


POST방식의 대표적인기능은 리소스를 생성하는것으로 블로그에 글을 등록하는 경우에 해당.

PUT은 리소스를 변경하는데 사용, 예를들면 블로그에서 글을 업로드한 작성자를 변경하는 경우에 해당

DELETE는 리소스를 삭제하는 메소드,


GET과 POST 메소드

폼에서 사용자가 입력한 데이터들을 서버로 보낼때, GET과 POST는 차이가 있습니다.

GET은 GET http://docs.djangoprojact.com/search/?q=forms&release=1 HTTP/1.1

처럼 URL  부분의 ? 뒤에 키=값 쌍으로 이어붙여 보냅니다.


POST는 GET에서 URL에 포함시켰던 파라미터들을 아래 예시처럼 요청메시지의 바디에 넣습니다

POST http://docs,djangoprojact.com/search/HTTP/1.1

COntent-Type: application/x-www-form-urlencoded

q=forms&releases=1


GET방식의 장단점

많은 양의 데이터를 보내기 어렵다. URL의 길이제한이 있기 떄문

사용자의 데이터가 브라우저의 주소창에 노출된다는 단점이 있어 보안측면에서 불리함

POST방식은 많은데이터 전송이 가능하며, 장고 프레임워크에서도 폼은 POST방식만을 사용하고 있음.


상태코드

1XX ->정보제공

2XX- >성공

3XX->리다이렉션

4XX->클라이언트에러 ( 없는페이지요청)

5XX->서버에러 서버부하나 DB처리과정 오류, 서버에서 익셉션이 발생하는 경우해당


URL 설계

URL설계는 웹 서버 로직 설계의 첫걸음이고, 사용자 또는 웹 클라이언트에게 웹 서버가 가지고 있는 기능을 명시해주는 중요한 단계입니다. 

URL 구성항목

URL스킴: URL에 사용된 프로토콜의미

호스트명: 웹서버의 호스트명으로 도메인or ip주소로 표현

포트번호: 웹서버 내의 서비스 포트번호, 생략시에는 디폴트번호로 http는 80, https는 443을 사용

경로 : 파일이나 애플리케이션 경로

쿼리스트리 : 질의문자열로 앰퍼센트(&)로 구분된 키=쌍 형식 표현

프라그먼트 : 문서 내의 앵커등 조작 지정



REST 방식 URL 설계 

웹서버에 존재하는 요소들을 모두 리소스라 정의하고 URL을 통해 웹서버의 특정 리소스를 표현한다는 개념

리소스는 시간이 지남에 따라 상태가 변할 수 있기 때문에 클라이언트와 서버간의 데이터 교환을 리소스 상태의 교환으로 간주하고 있습니다.

그리고 리소스에 대한 조작을 GET,POST,DELETE등의 HTTP 메소드로 매핑합니다.

웹클라이언트에서 URL을 전송하는것이 웹서버에 있는 리소스상태에 대한 데이터를 주고받는 것으로 간주할수있습니다. 

http://blog.example.com/search/test    (REST방식 형태)


간편 URL

REST방식의 URL개념을 기반으로 사용자에게 친숙하게 URL을 표한하려는 노력이 진행되었습니다.

주로 검색엔진 분야에서 이러한 노력이 진전

길고 복잡한 특수문자 URL에서 간편 URL방식이 탄생되었습니다

간편URL은 쿼리스트링 없이 경로만 가진 간단한 구조의 URL을 말함.

검색엔진의 처리를 최적화 하기 위해 생겨난 간편한 URL은 URL을 입력하거나 기억하기 쉽다는 장점, 검색엔진 친화적, 사용자 친화적URL이라고 부르기도 함


파이썬의 우아한 URL

파이썬 프레임워크에서는 처음부터 간편URL체계 도입, 그외에도 정규표현식을 추가적으로 사용

url(r'^articles/(\d{4})/(\d{2})/(\d+)/$', view.article_detail),

해석 : r' ->이스케이프 되지 않은 raw스트링임을 표시

^ ->패턴의 시작을 표시

\d{4}-> 4자리 숫자를 의미

\d+ ->1자리 이상의 숫자를 의미

$ ->패턴의 끝을 의미


웹서버

웹클라이언트의 요청을받아서 처리하여 결과를 응답

주로 정적인 페이지 HTML, CSS, 자바 스크립트 파일을 제공할때 사용

웹 애플리케이션 서버

웹 서버로부터 동적 페이지를 요청받아서 처리하고 그 결과를 웹서버에 반환

주로 동적페이지 생성을 위한 프로그램 실행과 데이터베이스 연동기능을 처리

(아파치 텀켓, JBoss, WebLogic, WebSphere, Jetty, Jeus 등)



 











댓글