Part1
서버(Server)
홀서버로 예시를 들어보자.
홀서버의 역할
그렇다면 손님과 홀서버의 관계는 몇대몇일까?
이제 프로그래밍으로 예시를 들어보자
서버 : 클라이언트(iOS/AOS...) = 1 : n
위의 말은 서버 개발자 1명, 클라이언트 개발자 n명이 아니라
서버 하나에 여러개의 클라이언트 요청이 있을 수 있다는 말이다.
서버와 클라이언트의 구조
우선 식당에 비유를 하면 손님이 스테이크를 주문하면 홀서버가 주방에 전달하고 요리사가 냉장고 시스템이라는 곳에 재료 여부를 확인하면 냉장고 시스템에서 창고에서 재료 수량을 확인한다.
그후 요리여부를 손님에게까지 전달한 후 true면 요리가 손님에게 전달되고 false면 전달되지 않는다.
이제 프로그래밍으로 설명을 하자면 아래와 같다.
이제 정리를 해보자면
- 식당 = (서버의) 컴퓨터
- 홀서버 = 웹 서버
- 주방 = 백엔드 언어
- 냉장고 시스템 = DBMS(DataBase Management System)
- 냉장고 = DB
그렇다면 웹서버, 백엔드 언어, DBMS, DB가 무엇일까?
웹서버
웹서버를 3개의 키워드로 정리하자면
- WWW(World Wide Web)
- HTTP
- 제공
웹서버란 WWW를 통해서 HTTP라는 규약을 지키면서 데이터를 제공하거나 서버에서 제공하는 무언가를 제공해주는 서버
[WWW]
WWW란 네트워크를 통해 정보에 접근할 수 있도록 Tim Berners-Lee가 만든 시스템이다. 우리가 주소창에서 많이 보는 그것!
[HTTP(HyperText Transfer Protocol)]
우리가 글을 읽을 때는 대부분 위에서 아래로 단형식으로 읽는데 HyperText라는 것은 다방향, 다형식으로 읽을수 있는 Text라는 의미이다.
Transfer Protocol는 송수신 규약이다.
따라서 HTTP는 Hyper Text를 송수신하는 규약을 의미한다.
참고하면 좋은 사이트 https://developer.mozilla.org/ko/docs/Learn/Common_questions/What_is_a_web_server
다시 한번 웹서버를 정리하자면 WWW를 통해서 어떠한 서비스를 제공하는건데 그 규칙은 HTTP이다.
웹서버의 예시
Backend language
Backend language란 서버측에서 실행되는 프로그래밍 언어라고 할 수 있다.
다시 말하자면 Backend language는서버를 동작시키고 DBMS시키고 데이터를 CRUD하는 것을 가능하게 하는 것이다.
종류
DBMS
데이터베이스 관리 시스템이란 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어들을 의미한다.
- MySQL - 가격이 저렴해서 많이 사용한다.
- MongoDB
- MsSQL
- Oracle - 성능은 좋지만 가격은 비쌈
DB
데이터베이스란 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터들의 모임
Request의 형태
Part2
API(Application Programming Interface)
API는 응용프로그램 간에 데이터를 주고받는 방법(형식) 이다.
이처럼 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단을 API라고 한다!!!
REST API(RESTful API)
REST API란 REST형식의 API이다.
REST를 알아보기전 REST의 가장 중요한 특성에 대해서 알아보자.
REST의 가장 중요한 특성은 각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습자체로 추정이 가능하다.
이 특성이 중요한 이유를 예시로 알아보자
어떤 학교의 API를 만든다고 생각했을 때
위처럼 API를 짜면 서비스 기능자체에는 문제가 없다. 하지만 이 서비스는 개발자 혼자 사용하는 것이 아닌 다른 사람도 같이 이용해야할 경우 굉장히 일하기 힘들게된다.
이런 문제를 고친 방법이 바로 REST API이다.
다시 어떤 학교의 REST API로 API를 만든다고 생각했을 때
[요청된 결과]
{
"results" : [
{"idx": 1, "name": "예비반"},
{"idx": 2, "name": "초급반"},
{"idx": 3, "name": "중급반"},
]
}
[요청된 결과]
{
"results" : [
{"idx": 1, "name": "예비반"},
{"idx": 2, "name": "초급반"}, //index가 2인 초급반 출력
{"idx": 3, "name": "중급반"},
]
}
[요청된 결과]
{
"results" : [
{"idx": 1, "name": "김oo", "sex": "male"},
{"idx": 2, "name": "강oo", "sex": "female"},
{"idx": 3, "name": "박oo", "sex": "male"},
]
}
서버에 REST API로 요청을 보낼 때는 HTTP라는 규약에 따라서 전송을 한다. 우체국에서 우편물을 보낼 때 일반우편, 등기,택배 등 다양한 방식이 있듯이HTTP로 요청을 보낼 때도 여러 메소드가 있다.
REST API에서는 아래와 같이 총 4~5가지를 사용한다.
- GET
- POST
- PUT
- DELETE
- PATCH
우편물을 보낼 때 소포가 더 많은 우편물을 보낼 수 있듯이 POST, PUT, PATCH에는 BODY라는 주머니가 있어서 GET이나 DELETE를 사용할 때보다 POST, PUT, PATCH가 정보를 더 많이, 안전하게 보낼 수 있다.
사실 이 각각의 메서드가 정해진 역할이 있는 것은 아니다. 하지만 누구든 각 요청의 의도를 쉽게 파악할 수 있도록 REStful하게 API를 만들기 위해서는 이들을 목적에 따라 구분해서 사용해야 한다.
- GET - 데이터를 읽는데 사용(Read)
- POST - 새로운 정보를 추가하는데에 사용(Create)
- PUT - 기존 데이터를 새로운 데이터로 변경(정보를 한꺼번에 변경할 떄 사용) (Update)
- DELETE - 데이터를 삭제할 때 (Delete)
- PATCH - 기존 데이터를 새로운 데이터로 변경(정보의 일부만 변경할 떄 사용) (Update)
따라서 REST API란 HTTP요청을 보낼 때 어떤 URI, 어떤 메서드를 사용할지에 대한 개발자들의 규칙이다. (동사는 사용하지 않고 명사를 사용한다.)
성공여부
위와 같이 데이터에 대한 Request를 보내게되면 서버는 데이터를 성공 또는 실패(URL주소의 오류, 메소드 선택의 오류)을 Sucess / failure 또는 Code로 Responce할 수 있다.
Code
이곳을 참고하자
참고
https://www.youtube.com/watch?v=iOueE9AXDQQ