HTTP 메서드 활용
- 클라이언트에서 서버로 데이터 전송
- HTTP API 설계 예시
클라이언트에서 서버로 데이터 전송 방식 2가지
- 쿼리 파라미터를 통한 데이터 전송
- GET
- 주로 정렬 필터(검색어)
- 메시지 바디를 통한 데이터 전송
- POST, PUT, PATCH
- 회원 가입, 상품 주문, 리소스 등록, 리소스 변경
데이터를 전달하는 방식을 나누자면 크게 두가지로 나눌 수 있습니다. 첫번째는, URI 끝에 쿼리 파라미터를 넣어서 데이터를 전송하는 방식이 있고요. 이것은 주로 GET에서 많이 사용합니다. 그리고 정렬 필터를 사용할 때 많이 사용합니다. 예를 들어서 검색어를 칠 때, 구글에 q=hello같이 검색어 칠 때와 게시판 리스트에 정렬 조건을 넣거나 이럴 때 쿼리 파라미터를 많이 사용합니다.
그 다음에 두번째로 뭐냐면 이 데이터를 클라이언트에서 서버로 전송할 때, 메시지 바디 HTTP 메시지 바디로 통해서 데이터를 전송하는 것이 있습니다. 이 때는, 이 HTTP 메소드중에서 POST, PUT, PATCH를 주로 사용합니다. 그리고 회원가입을 하려면 데이터를 클라이언트 서버로 전송해야겠죠. 상품을 주문하거나 새로운 리소스를 등록하거나 리소스를 변경할 때, 주로 씁니다.
클라이언트에서 서버로 데이터 전송 4가지 상황
- 정적 데이터 조회
- 이미지, 정적 텍스트 문서
- 동적 데이터 조회
- 주로 검색, 게시판 목록에서 정렬 필터(검색어)
- HTML Form을 통한 데이터 전송
- 회원 가입, 상품 주문, 데이터 변경
- HTTP API를 통한 데이터 전송
- 회원 가입,상품 주문, 데이터 변경
- 서버 to 서버, 앱 클라이언트, 웹 클라이언트(Ajax)
클라이언트에서 서버로 예를 들어서 경로가 /static에 /star.jpg가 들어간다면 여기에서 서버는 별 이미지를 클라이언트에게 내려주는겁니다. 이런 경우에는 사실 추가적인 데이터를 전달하는게 없습니다. 그냥 단순하게 URI 경로만 넣으면 서버에서 받아서 서버가 이미지 리소스를 만들어서 클라이언트를 내려주는겁니다. 이 때는 사실 쿼리 파라미터를 쓰지 않고, 추가적인 데이터가 필요 없습니다. <- 정적 데이터를 조회할 때
정적 데이터 조회 정리
- 이미지, 정적 텍스트 문서
- 조회는 GET 사용
- 정적 데이터는 일반적으로 파라미터 없이 리소스 경로로 단순하게 조회가 가능
조회를 할 때, 데이터를 전달해야 할 때가 있습니다. 그게 언제냐면 동적 데이터를 조회할 때 필요한데요. 우리 지금까지 했던 그 HTTPS에 구글에다가 search라는 경로에다가 우리가 이제 검색어나 추가 조건들을 넣어야겠죠. 추가 데이터를 전달해야하는데요. 이 때 이 쿼리 파라미터들을 사용합니다.
자 그래서 위 사진처럼 쿼리 파라미터를 포함하여 HTTP 메시지가 만들어지고 서버에 전달을 합니다. 그걸 서버에서 받아서 쿼리 파라미터를 가지고 서버에서 key-value로 꺼낼 수 있습니다. 꺼내가지고 정렬 필터해서 결과를 동적으로 생성합니다.
동적 데이터 조회 정리
- 주로 검색, 게시판 목록에서 정렬 필터(검색어)
- 조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정렬 조건에 주로 사용
- 조회는 GET 사용
- GET은 쿼리 파라미터 사용해서 데이터 전달
여러분이 순수한 HTML 갖고 프로젝트를 잘 때는 이 HTML Form 태그로 회원가입을 만들기도합니다. 그러면 Form 태그에다가 action=save로하고 metod=post로 넣습니다. 위에 화면처럼 만드는 겁니다. username=kim age=20로 서버에 전송하고 싶은거에요. 전송 버튼을 만들어서 눌러주면 웹 브라우저가 Form의 데이터를 읽어서 HTTP 메시지를 생성해줍니다.
어떤식으로 생성해주냐면,
위에처럼 HTTP 메시지를 생성해줍니다. 쿼리파라미터와 거의 동일한 방식으로 서버에 전송을해줍니다.
이 HTML Form으로 데이터를 전송할 때, 메소드를 get으로 변경하실 수 있습니다. get으로 바꿔서 전송을 누르면 웹 브라우저가 어떻게 하냐면 요청 HTTP 메시지를 GET 메시지로 바꿉니다. 그런 다음에 GET이니까 메시지 바디를 쓰지 않으므로 쿼리 파라미터 안에 넣어버립니다. 그리고 서버에 전송합니다. 그런데 GET은 조횧에만 사용합니다! 리소스를 변경하는 곳에서는 절대로 사용하면 안됩니다.
get같은 경우에는 회원 멤버 리스트를 조회할 때 사용하면 됩니다.
'HTTP 웹 지식' 카테고리의 다른 글
HTTP 상태 코드2(2xx - 성공) (0) | 2022.01.11 |
---|---|
HTTP 상태 코드1(HTTP 상태 코드 소개) (0) | 2022.01.11 |
HTTP 메서드4(메서드의 속성) (0) | 2022.01.09 |
HTTP 메서드3(PUT, PATCH, DELETE) (0) | 2022.01.09 |
HTTP 메서드2(GET, POST) (0) | 2022.01.09 |