GET

GET 메소드는 클라이언트에서 서버로 어떠한 리소스로 부터 정보를 요청하기 위해 사용되는 메소드

즉, 데이터를 읽거나, 검색 할때 사용되는 method로 예를 들면 게시판의 게시물을 조회할 때 사용된다.

GET은 요청을 전송할 때 URL 주소 끝에 파라미터로 포함되어 전송되며 이 부분을 Query String(쿼리스트링) 이라 부른다.

GET Method는 오로지 데이터를 읽을 때만 사용되며 수정할 때는 사용하지 않는다.

URL 예시) www.example.com?name1=john&name2=mount

GET 특징

  • GET 요청은 캐시가 가능하다.
  • GET 요청은 브라우저 히스토리에 남는다.
  • 파라미터에 내용이 노출되기 때문에 민감한 데이터를 다룰 때 GET 요청을 사용해서는 안된다.
  • GET 요청은 데이터 길이에 대한 제한이 있다.

POST

POST 메소드는 클라이언트에서 서버로 리소스를 생성/업데이트 하기 위해 데이터를 보내는데 사용되는 메소드

GET과 달리 POST는 전송할 데이터를 HTTP 메세지 Body에 담아서 전송한다.

그리고 Body의 타입은 요청 헤더의 Content-Type에 따라 결정된다

HTTP 메세지의 Body는 길이의 제한 없이 데이터를 전송할 수 있다. 그래서 POST 요청은 GET과 달리 대용량 데이터를 전송할 수 있다.

URL 예시) www.example.com

POST 특징

  • POST 요청은 캐시되지 않는다.
  • POST 요청은 브라우저 히스토리에 남지 않는다.
  • POST 요청은 데이터 길이에 제한이 없다.

GET / POST 차이점

  • 사용 목적:
    • GET 메소드 : 서버의 리소스에서 데이터를 요청할 떄 (SELECT)
    • POST 메소드: 서버의 리소스를 새로 생성하거나 업데이트 할 때 사용 (CREATE)
  • Body 유무:
    • GET: URL 파라미터에 요청하는 데이터를 담아 보내기 때문에 HTTP 메시지에 Body가 없다
    • POST: Body에 데이터를 담아 보내기 때문에 HTTP 메시지에 Body가 존재
  • Idempotent (멱등성):
    • GET 요청은 멱등이며, POST는 아니다

Idempotent(멱등성)

  • Idempotent (멱등)의 수학적 개념은 다음과 같다
    • GET은 리소스를 조회한다는 점에서 여러 번 요청하더라도 응답이 똑같다.
    • POST는 서버에게 동일한 요청을 여러 번 전송해도 응답은 항상 다를 수 있다.(Non-Idempotent)
  • → 수학이나 전산학에서 연산의 한 성질을 나타내는 것으로, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질
    GET 과 POST는 이와 같이 큰 차이가 있기에 적절한 용도에 맞게 사용해야 합니다.

참조 페이지 : [https://velog.io/@songyouhyun/Get과-Post의-차이를-아시나요]

 

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

 

 

반응형

'프로그래밍 > Web Program' 카테고리의 다른 글

쿠키(Cookie)와 세션(Session)  (0) 2021.04.30
CSS 적용하는 방법  (0) 2020.09.28
Substitution  (0) 2020.02.24
Output Cache (출력캐시)  (0) 2018.07.26

쿠키와 세션 사용 이유

 쿠키와 세션의 이해를 돕기 위해 HTTP 특징을 먼저 살펴보겠습니다.

 HTTP 프로토콜의 특징

  1. Connectionless(비연결지향)

     HTTP는 사용자가 Request(요청)를 서버에 보내면 서버는 클라이언트에게 Response를 주고 연결이 끊기는 특성이 있습니다.

 

  2. Stateless(상태없음)

     커넥션이 끊기는 순간 클라이언트와 서버의 통신은 완전 종료가 되며 상태 정보는 유지하지 않는 특성이 있습니다.

 

위와 같은 특징을 갖고 있기 때문에 서버의 리소스 낭비가 줄어드는 장점을 가지고 있지만, 이로 인하여 통신을 할때마다 서버는 클라이언트가 누구인지 인증을 계속해야 합니다. 즉, 로그인 후에 페이지를 이동하면 다시 로그인을 해야하는 상황이 발생할 수 있습니다.

하지만 위와 같은 Connetionless(비연결지향)Stateless(상태없음)를 보완해주며 서버가 클라이언트를 식별하게 해주는 것이 쿠키와 세션입니다.


쿠키(Cookie)

쿠키란, 사용자가 웹 사이트에 방문하였을때, 해당 사이트 서버에서 사용자의 컴퓨터(클라이언트 로컬)에 저장하는 작은 기록 정보 파일이며, HTTP에서 필요시 저장한 해당 정보(쿠키)를 참조하거나 재사용하여 사용합니다.

 

1. 쿠키는 클라이언트(브라우저) 로컬에 저장되며 (Key, Value) 형태로 구성되어 있습니다.

2. 쿠키는 사용자 인증이 유효한 시간을 명시 할 수 있으며, 유효 시간을 지정하면 브라우저를 끄더라도 인증이 유지되는 특징이 있습니다.

3. Response Header에 Set-Cookie 속성 사용하여 클라이언트에 쿠키를 만들 수 있습니다.

4. 클라이언트에 총 300개의 쿠키를 저장할 수 있습니다.

5. 하나의 도메인 당 20개의 쿠키를 가질 수 있습니다.

 

세션 쿠키 (Session Cookie) 와 지속 쿠키(Persistent Cookie)

세션 쿠키(Sesstion Cookie)란, 만료 날짜/시간을 지정한 쿠키를 말합니다.

세션 쿠키는 브라우저 메모리에 저장되므로 브라우저가 종료되면 쿠키는 사라지게 됩니다.

 

지속 쿠키(Persistent Cookie)란, 만료 날짜/시간을 지정하지 않아 항상 유지하는것으로 판단되는 쿠키를 말합니다.

지속 쿠키는 파일로 저장되므로 브라우저가 종료되어도 쿠키는 계속 남게 됩니다.

 

쿠키의 동작방식

1. 클라이언트가 브라우저에 접속하여 페이지를 Request(요청)

2. 서버에서 쿠키를 생성하여 HTTP에 쿠키를 포함하여 Response(응답)

3. 클라이언트가 서버에 재요청 시 응답 받은 쿠키 정보도 같이 HTTP 헤더에 담아서 Request(요청)

4. 서버에서 쿠키를 읽어 상태 정보를 변경할 필요가 있으면 쿠키를 업데이트하여 HTTP 헤더에 포함하여 Response(응답)

 

쿠키 사용 예제

1. ID 저장, 로그인 상태 유지

2. "오늘 더 이상 이 창을 보지않음" 체크

3. 쇼핑몰 사이트 장바구니


세션(Session)

쿠키를 기반하고 있지만, 사용자 정보 파일을 브라우저(클라이언트 로컬)에 저장하는 쿠키와 달리 서버 측에서 관리합니다.

 

1. 서버에서는 클라이언트를 구분하기 위해 세션 ID를 부여하며 웹 브라우저가 서버에 접속해서 브라우저를 종료할 때까지 인증상태를 유지합니다.

2. 클라이언트가 Request(요청)을 보내면, 해당 서버 엔진이 클라이언트에게 유일한 세션ID 값을 부여한다.

3. 사용자에 대한 정보를 서버에 저장하기에 쿠키보다 보안이 좋습니다.

4. 사용자가 많아질수록 서버 메모리를 많이 차지하게 됩니다.

 

세션의 동작방식

1. 클라이언트가 브라우저에 접속하여 페이지를 Request(요청)

2. 서버에서 세션에 클라이언트에 대한 데이터를 저장하고 이를 알 수 있는 세션ID를 생성하여 쿠키에 세션ID를 포함하여 Reponse(응답).

3. 클라이언트가 서버에 재요청 시 세션ID가 포함된 쿠키 정보도 같이 HTTP 헤덩 담아서 Requst(요청) 

4. 서버에서 세션ID가 포함된 쿠키 값을 읽어 세션ID의 상태 파악 처리 후 Request(응답)

결과적으로, 세션을 통해 클라이언트의 정보는 서버에 두고 세션 아이디를 이용해서 인증받고 정보를 이용하는 방식입니다.

 

세션 사용 예제

1. 로그인 정보 유지

 

 

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

 

반응형

'프로그래밍 > Web Program' 카테고리의 다른 글

GET / POST  (0) 2022.03.05
CSS 적용하는 방법  (0) 2020.09.28
Substitution  (0) 2020.02.24
Output Cache (출력캐시)  (0) 2018.07.26

1. Inline Style Sheet

 Inline Style Sheet은 HTML 태그 Style 속성에 CSS 코드를 직접 넣는 방법이다.

<div id="wrap" style="background-color:blue"></div>

 

2. Internal Style Sheet

 Internal Style Sheet은 HTML 페이지 내 <style></style> 코드를 입력 후 안에 CSS 코드를 입력하는 방법이다.

<style>
	div{
    	background-color:blue;
    }
</style>

 

3. Linking Style Sheet

 Linking Style Sheet은 CSS 파일을 생성 후 이를 HTML 문서와 연결하는 방법이다.

 아래와 같은 태그를 적용하고 싶은 HTML 페이지에 추가 후 href로 적용할 .css 파일 경로를 입력하여 연결한다.

<link rel="stylesheet" href="LinkingStyleSheet.css"/>

 

 

반응형

'프로그래밍 > Web Program' 카테고리의 다른 글

GET / POST  (0) 2022.03.05
쿠키(Cookie)와 세션(Session)  (0) 2021.04.30
Substitution  (0) 2020.02.24
Output Cache (출력캐시)  (0) 2018.07.26

Substitution (캐시 후 대체)

 캐시된 페이지 내 동적으로 컨텐츠를 출력할 때 사용한다.

 

 즉, 전체 페이지를 OutputCache를 이용하여 캐시가 처리되었을 때,

 Substitutio 컨트롤은 동적으로 컨텐츠를 출력할 수 있도록 해준다.

 

 간단한 예제를 확인해보면 아래와 같다.

  1. Output Cache 하단의 시간은 캐시가 30초간 걸린 시간

  2. Substitution 하단의 시간은 <asp:Substitution> 컨트롤을 이용하여 동적으로 현재 시간을 출력 처리한 결과

  -> 해당 페이지를 새로 고침 하면 output Cache는 캐시가 걸려 시간이 10:41:10으로 고정되어 있는 반면

      Substitution은 새로고침 할 때마다 시간이 새롭게 갱신되는 것을 볼 수 있다.

 

[ 현재 시간 출력 ]

<h2>OutputCache</h2>
<div><%=test %></div>

<h2>Substitution</h2>
<asp:Substitution runat="server" MethodName="GetCurrentDate" id="substitution" />

 

#region [ Substitution 메소드 처리 ] 

protected static string GetCurrentDate(HttpContext context)
{
	return DateTime.Now.ToString();
}

#endregion
반응형

'프로그래밍 > Web Program' 카테고리의 다른 글

GET / POST  (0) 2022.03.05
쿠키(Cookie)와 세션(Session)  (0) 2021.04.30
CSS 적용하는 방법  (0) 2020.09.28
Output Cache (출력캐시)  (0) 2018.07.26

Cache


Cache

: 웹 서버측의 임시 메모리 공간이며, 

 서버의 효율을 위해 사용한다.


Output Cache (출력 캐시)

: 출력 캐시 같은 경우 임시 페이지를 잠시 저장해놓는 공간이며,

 한 페이지를 여러명이 접속 시 DB 접속 보다

 Cache 에 저장된 페이지를 조회해서 보여준다.


사용방법을 알아보면,


[ 사용 방법 ]

<%@ OutputCache Duration="30" VaryByParam="none" %>

코드 내에 선언

 - Duration="30" 30초 간격으로 페이지를 새로 호출을 의미


Ex ) 현재 오후 10시 24분 50초를 웹페이지에 출력 후 

새로고침을 해도 30초 동안 시간 변동이 없게 된다. 

왜냐하면, Duration을 30초로 설정했긴 때문으로 30초 후 부터

다시 코드를 실행.

-------------------------------- 31초 후  새로고침

- VaryByParam="none"

현재 none 으로 설정을 했지만 값을 입력하면 해당 문자열 파라미터에 따라

캐시가 초기화 됩니다.

Ex) VaryByParam="test"


 1) www.url?test=1

 2) www.url?test=2

1,2 번의 경로는 test 파라미터 값에 따라 캐시가 달라집니다.




반응형

'프로그래밍 > Web Program' 카테고리의 다른 글

GET / POST  (0) 2022.03.05
쿠키(Cookie)와 세션(Session)  (0) 2021.04.30
CSS 적용하는 방법  (0) 2020.09.28
Substitution  (0) 2020.02.24

+ Recent posts