본문 바로가기

편안한코딩생활/기타등등

http 1.1 체험하기

 

 

1. POSTMAN 설치

https://www.postman.com/downloads/

 

Postman | The Collaboration Platform for API Development

Simplify workflows and create better APIs – faster – with Postman, a collaboration platform for API development.

www.postman.com

2. HTTP1.1

  • get
  • post
  • delete
  • put

그런데 여기서 요청을 할때, 어떤 데이터를 처리해줘야하는지 서버에서 어떻게 알까?

get방식일때 쓰는게 쿼리스트링, 어떤걸 달라고 붙여서 보내기만 하면 되니까

근데 요청하는 데이터가 저렇게 여러가지라면?

이때 필요한게 바로 MIME TYPE

3. stateless 와 stateful

stateful => 연결 지속 , 채팅 같은 서비스, 그리고 세션을 생성해서 인증된 유저와 계속 데이터 주고받기 가능.

그러나 서버에 부하가 매우 크다. 그래서 http방식에서 사용하지 않음

stateless  => 요청시마다 스트림을 연결해서 data를 주고 받는 방식 ,http방식.

=> 한번 연결 후 끊기는데 어떻게 유저 인증을??? 

=> 이럴때 쓰이는게 스프링 시큐리티.

 

4. MIME 타입

 

 

유저가 post요청시, 데이터를 어디에 담아가나?

헤더와 바디에 담아감.

http통신방법

  1. 서킷 스위칭 : 물리적으로 선이 계속 연결되어야해서 비용 많이 발생, 하지만 속도 매우빠름

  1. 패킷 스위칭: 데이터를 쪼개서(쪼갠 하나의 조각 : 패킷)  각각 보낸 데이터가 섞여서 전송 된 후  받는쪽에서 조립

패킷에 순서와, 누가보냈는지 등의 정보가 있어야 조립할 수 있으므로 그 정보를 header에, 실제 데이터를 body에 담아 보내는거다.

근데 이 header에 내가 보낸 데이터의 타입을 알려주는 방법이 있음, 마구잡이로 적는게 아니다

이 타입을 표기하는 방법이 바로 마임타입(mime type)

 

https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types

 

MIME 타입의 전체 목록 - HTTP | MDN

다음은 일반적인 확장자로 정렬된, 문서 타입과 관련된 MIME 타입의 포괄적인 목록입니다.

developer.mozilla.org

css를 표기하는 방식

이걸 다 외울 필요는 없고 필요할때마다

5. Controller 생성 및 실습

  • HttpControllerTest.java 생성
  • Get 메서드
  • Post 메서드
  • Put 메서드
  • Delete 메서드
package com.cos.blog.test;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

//사용자가 요청 => 응답(Html파일)
//@Controller


//사용자가 요청 => 응답(Data)
@RestController
public class HttpControllerTest {
    @GetMapping("/http/get")
    public String getTest(){
        return "get요청";
    }
    @PostMapping("/http/post")
    public String postTest(){
        return "postTest";
    }
    @PutMapping("/http/put")
    public String putTest(){
        return "putTest";
    }

    @DeleteMapping("/http/delete")
            public String deleteTest(){
        return "deleteTest";
    }

}

 

 

f5누르면 get요청에서 뭐를 보냈는지 정보가 뜬다.

근데 post, put, delete는 불가능(405 오류) => 지금 데이터없으니까!

=> 그래서 postman이용해서 테스트


 

private로 변수 선언하는 이유?

아래 방법처럼 직접 변수를 접근해서 바꾸는 건 객체 지향원칙에 어긋암!!
변수를 private로 선언하고 메소드를 통해서 값 변경.

1.get요청 테스트

get으로 요청시 쿼리스트링으로 보낸다

2.post요청

 

1. form 

x-www-form 어쩌구 : <form> 태그로 정보 보낸거랑 똑같!

2.

raw데이터 : 가장 기본 데이터 (text/plain)

text를 보낼때, get 처럼 그냥 보내면 404, 

바디에 담아서

raw에서 text타입을 고르고 전송

3.json

key는 항상 string. 쌍따옴표 필수

여기서 json타입 데이터를 적어놓고 text를 고르면 messageConveter가오브젝트에 데이터 못넣음(단순 문자열이므로)