서버란?
: 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템
(서버와 연동할 때 클라이언트측에서도 데이터를 전달하는 경우가 있는데, 어떻게 전달할까? ex. ID & Password)
Query String
<형식>
- 정해진 엔드포인트 주소 이후에 ?를 쓰는것으로 쿼리스트링이 시작함을 알린다
- parameter=value로 필요한 파라미터의 값을 적는다
- 파라미터가 여러개일 경우 &를 붙여 여러개의 파라미터를 넘길 수 있다.
엔드포인트주소/엔드포인트주소?파라미터=값&파라미터=값
- = 로 key 와 value 가 구분된다.
Path Variable
- 보안이 크게 중요하지 않은 get 메소드 요청시 사용
- url에 변수도 함께 보내는 방법
/user:userId or /user/{userId}
Body
- 로그인과 같이 보안이 필요한 경우 따로 형식이 존재하지 않는 Body에 담아서 보낸다
Alamofire
: 서버와의 연동을 도와주는 라이브러리
- 비슷한 기능의 라이브러리 - Swift JSON
- iOS, macOS를 위한 Swift 기반의 HTTP 네트워킹 라이브러리
- Alamofire는 URLSession 기반
-> URLSession은 네트워킹 호출에서 모호한 부분이 많은데 Alamofire를 사용한다면 데이터를 접근하기 위한 노력을 줄일 수 있으며 코드를 더 깔끔하고 가독성 있게 쓰는 것이 가능해짐
서버 연동을 할 때 사용하는 또다른 라이브러리, Moya
: Alamofire 라이브러리의 코드의 유지보수와 유닛 테스트가 힘들다는 단점을 보완하고자 나타난 네트워킹 라이브러리
- Moya는 URLSession을 추상화한 Alamofire를, 다시 추상화한 라이브러리로 Network Layer를 템플릿 화해서 재사용성을 높이고, 개발자가 request, response에만 집중을 하도록 쉽게 말해 개발자를 도와주는 라이브러리라고 할 수 있다!