ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 3. Backend Language, Restful, Framework
    Programming/BackEnd 2020. 5. 11. 21:26

    HTTP 패킷은 크게 보면 헤더바디로 구성되어 있다. 바디에는 실제 데이터가 담겨 있고, 헤더에는 바디에 담겨 있는 데이터에 대한 설명이 들어있다고 생각하면 쉽다. HTTP 패킷을 택배상자에 비유할 수 있다. 택배상자 안 에는 실제 내용물이 들어가고, 상자 겉표지에는 보내는 사람, 받는 사람, 어떤 택배인지, 보내는 날짜 등등 정보가 적혀있다.

    Contents-Type이 text인지 file인지, 보내는 측 IP는 어디인지, 받는 측 (서버)의 IP는 어디인지 등 이러한 정보가 헤더에 적히게 된다.

     

    이 HTTP 패킷을 주고받는 방법에는 여러가지가 있는데 대표적으로 GET방식과 POST방식이 있다.

    GET 방식은 쿼리스트링으로 데이터를 주고받고, POST방식은 Body나 Form으로 주고 받는다.

    쿼리스트링은 url 뒤에 ?key=value 형태로 붙여서 가기 때문에 바디에 데이터를 보내는 방식과는 다르다.

    Post 방식으로 데이터를 주고 받는 방법은 크게 두가지 있다.

    form은 전통적인 방식으로 양식에 써서 보내는 방식이고, 바디에 raw한 형태로 데이터를 보내는 방식이 있다.

     

    웹서버에서는 데이터가 어떠한 형식으로 들어오는지 알아야 한다. 따라서 클라이언트와 서버와 서로 데이터 포멧을 맞춰야 한다. 데이터 포멧의 경우 과거에는 xml형식으로 주로 통신을 했고, 최근에는 json을 많이 사용한다.

    xml 같은 경우 

    json은 데이터 크기가 작다. 닫는 태그가 없기 떄문

    객체단위로 매핑이 되기 때문에 객체 단위로 데이터를 받으면 클라 입장에서 유지보수하기 용이하다.

     

    API는 핵폭탄 버튼에 비유 가능하다. 대통령(클라) 발사장치(매우복잡한 로직으로 구성) 

    대통령은 버튼만 누르면 복잡한 로직을 모르더라도 핵폭탄을 발사시킬 수 있다.

    바로이 버튼이 대통령과 핵폭탄의 인터페이스가 되는 것이다.

     

     

    클라와 서버 간에 데이터 형식을 통일해서 통신을 해야 한다. 서버가 API명세서라는 문서를 만들어서 클라이언트에게 전잘해줘서 API명세에 맞춰서 데이터를 통신한다.

     

    - 스탠다드 미션 : 게시판 CURD 만들기.

    - 챌린지 미션 : 대댓글 등 심화기능 만들기.

    - API 명세서 체크.

     

    Restful API  메소드는 동사 리소스는 명사로 표현한다.

    get

    post

    put

    patch

    delete

    유저를 생성 POST/user

    유저 상세 조회 GET/user/1  #1번 유저를 조회한다. 여기서 1이 path variable

    유저리스트를 조회 GET/users

     

    get post와 차이점은 데이터 전달방식의 차이점이 아니다. 동작 행위의의 '의미'의 차이.

    get은 데이터를 조회한다는 동작 의미이지만, 데이터를 보낼 수 있다. 바로 어떤 데이터를 받고싶은지에 대한 데이터를 서버에 보내야 한다. 즉, get은 데이터를 조회한다는 의미로 사용하지만, 어떤 데이터를 조회하고싶은지에 대한 데이터를 보낼 수 있다.

     

    쿼리스트링 - 필터링. 조회 시 사용

    get/users?sex=female

    get/users/sex=female&age=18

    url에 붙여서 보내기 때문에 가독성은 높아진 케이스.

    특정 조건을 만족하는 데이터를 받기 위해 제한하는 데이터를 보내는 것이 쿼리스트링.

    보안성의 측면에서는 전혀 상관이 없다.

     

    get과 더불어 delete도 바디를 사용하지 않는다. 리스폰스(응답)으로는 줄 수 도있지만, 리퀘스트(요청) 시 get과 delete는 절대 바디에 데이터를 보내지 않는다. 쿼리스트링이나 pathvariable로는 보낼 수 잇음.

     

    서드파티 서버 ex)인앱결제, 소셜로그인 등

    서버 to 서버 개발. 다른 서버의 힘을 빌려야함. 

     

    프레임워크 라이브러리 API 

    라이브러리는 도구. 공구

    프레임워크는 개발을 위한 메뉴얼과 여러 공구들이 포함되어 있는데 개발 키트. 라이브러리의 집합.

    여러 사람이 합의된 방식으로 효율적으로 개발하기 위해 프레임워크 사용.

    API는 라이브러리를 사용하기 위한 규칙.

    'Programming > BackEnd' 카테고리의 다른 글

    URL vs URI  (0) 2020.05.14
    개발환경 세팅  (0) 2020.05.13
    OAuth / JWT  (0) 2020.05.11
    HTTP 패킷 / 메소드 / 상태코드와 메세지  (0) 2020.05.11
    2. DataBase  (2) 2020.05.05
Designed by Tistory.