GET vs POST vs PUT vs PATCH

HTTP Get vs Post
https://blog.outsider.ne.kr/312

    • GET은 URI(URL)가 가진 정보를 검색하기 위해 서버 측에 요청하는 형태. 서버의 값이나 상태를 가져오기위해서 사용함.
    • POST는 URI(URL)가 요청 URI(URL)에 폼 입력을 처리하기 위해 구성한 서버 측 스크립트로 구성되고 Form Action과 함께 전송되는데, 이때 헤더 정보에 포함되지 않고 BODY 부분에 요청 정보가 들어가는 형태. 서버의 값이나 상태를 바꾸기 위해서 사용함.

     

  • HTTP POST vs PUT
    https://itchipmunk.tistory.com/156/312

    • POST는 클라이언트가 요청하는 메소드. 리소스의 위치를 지정하지 않고 리소스를 생성. 여러번 실행하면 각각 다른 곳에 새로운 리소스가 생성됨. 즉, idempotent(멱등 f(x)=f(f(x)) 같은 작업을 계속 반복해도 같은 결과가 나오는 경우)를 만족하지 않음.
    • PUT는 클라이언트가 요청하는 메소드. 리소스의 위치를 지정하고 그 위치에 리소스를 생성하거나 업데이트. 동일한 리소스를 수정하기 때문에 여러번 실행하여도 같은 결과를 보장함. 즉, idempotent(멱등법칙 f(x)=f(f(x)))를 만족함.

     

  • HTTP PUT vs PATCH
    https://itchipmunk.tistory.com/157

    • PUT은 해당 자원의 전체를 교체하는 의미. PUT은 전체 자원을 업데이트 하기 때문에 동일 자원에 대해서 동일하게 PUT을 처리하는 경우 멱등하게 처리됨.
    • PATCH는 해당 자원의 일부를 변경한다는 의미. 반면 PATCH로 처리되는 경우 자원의 일부가 변경되기 때문에 멱등성을 보장할 수 없음.

     

HTTP Method

HTTP 응답코드 메소드 정리 GET, POST, PUT, PATCH, DELETE, TRACE, OPTIONS (tistory.com)

HTTP 메소드 정리

HTTP Method  전송형태  설명
GET  GET [request-uri]?query_string HTTP/1.1

Host:[Hostname] 혹은 [IP]

 요청받은 URI의 정보를 검색하여 응답한다.
HEAD  HEAD [request-uri] HTTP/1.1

Host:[Hostname] 혹은 [IP]

 GET방식과 동일하지만, 응답에 BODY가 없고 응답코드와 HEAD만 응답한다.

웹서버 정보확인, 헬스체크, 버젼확인, 최종 수정일자 확인등의 용도로 사용된다.

POST  POST [request-uri] HTTP/1.1

Host:[Hostname] 혹은 [IP]

Content-Lenght:[Length in Bytes]

Content-Type:[Content Type]

[데이터]

 요청된 자원을 생성(CREATE)한다. 새로 작성된 리소스인 경우 HTTP헤더 항목 Location : URI주소를 포함하여 응답.
PUT  PUT [request-uri] HTTP/1.1

Host:[Hostname] 혹은 [IP]

Content-Lenght:[Length in Bytes]

Content-Type:[Content Type]

[데이터]

 요청된 자원을 수정(UPDATE)한다. 내용 갱신을 위주로 Location : URI를 보내지 않아도 된다. 클라이언트측은 요청된 URI를 그대로 사용하는 것으로 간주함.
PATCH  PATCH [request-uri] HTTP/1.1

Host:[Hostname] 혹은 [IP]

Content-Lenght:[Length in Bytes]

Content-Type:[Content Type]

[데이터]

  PUT과 유사하게 요청된 자원을 수정(UPDATE)할 때 사용한다. PUT의 경우 자원 전체를 갱신하는 의미지만, PATCH는 해당자원의 일부를 교체하는 의미로 사용.
DELETE  DELETE [request-uri] HTTP/1.1

Host:[Hostname] 혹은 [IP]

 요청된 자원을 삭제할 것을 요청함.  (안전성 문제로 대부분의 서버에서 비활성)
CONNECT  CONNECT [request-uri] HTTP/1.1

Host:[Hostname] 혹은 [IP]

 동적으로 터널 모드를 교환, 프락시 기능을 요청시 사용.
TRACE  TRACE [request-uri] HTTP/ 1.1

Host: [Hostname] 혹은 [IP]

 원격지 서버에 루프백 메시지 호출하기 위해 테스트용으로 사용.
OPTIONS  OPTIONS [request-uri] HTTP/ 1.1

Host: [Hostname] 혹은 [IP]

 웹서버에서 지원되는 메소드의 종류를 확인할 경우 사용.

 

Lab2

Lab2 프로젝트 디렉토리 안에 모든 파일과 보고서(3-4장정도 – 장수제한없음)를 넣고 AJ21_Lab2_학번_이름.zip 압축한 후 제출한다. (Due by 3/23)

aj21-lab2
MyFoodData-Nutrition-Facts-SpreadSheet-Release-1-4
declaration

Lab2_1 – 식품 영양 정보를 ArrayList에 넣고 다음을 사용하여 구현한다.
index.jsp forward lab2.jsp or sendRedirect lab2.jsp
lab2.jsp includes header.jsp, list.jsp, footer.jsp
list.jsp includes declaration.jsp
declaration.jsp contains FoodNutrientFact & List of FoodNutrientFacts
detailView.jsp contains declaration.jsp, header.jsp, footer.jsp
header.jsp go back to index.jsp

Lab2_2 – 본인이 원하는 JSP를 작성한다. 메인/테이블/개별정보 페이지로 구성, HTML div, img, table, JSP implicit object사용, JSP로 동적으로 img, table, href 등 표현

Term Project

Term Project

2021-1학기_자바활용설계지침서

Due by 03/24 – Project Team Formation (week 4)
Group1 – 김동규, 박진아, 이형주
Group2 – 김동우, 오민혁, 조정민
Group3 – 김우진, 김주원, 김지환
Group4 – 동하오밍, 리우청슈워, 천란
Group5 – 손준호, 안소민

Due by 04/07 – Project Proposal (week 6)
Due by 04/28 – Project Midterm Report (week 9)
Due by 05/19 – Project Progress Report (week 12)
Due by 06/09 – Project Final Presentation & Demonstration (week 15)