안녕하세요! 개발하는 윤기사입니다!
오늘은 오랜만에 HTTP를 이용한 통신에 대한 포스팅을 준비해 왔습니다!!
바로 시작해 보시지요!
HTTP : Hyper Text Transfer Protocol의 약자.
인터넷에서 데이터를 주고받을 수 있는 프로토콜
Request - Response의 방식을 가지고 있는데, 클라이언트의 요청이 있을 때 서버가 응답하는 방식을 뜻합니다! (단방향 통신)
서버가 클라이언트에게 먼저 정보를 주지 못하고, 꼭 클라이언트가 서버에 요청을 해서 데이터를 받아야 합니다.
🍎 2가지 특징
1. 비연결성(모든 클라이언트 요청에 대해 항상 새롭게 연결 & 해제)
2. 무상태(서버가 클라이언트의 정보를 기억하지 않음)
HTTP 메서드는 GET, POST, PUT, DELETE 방식이 있습니다.
이번 포스팅에서 다뤄볼 것은 GET 방식입니다!
서버에 정보를 요청할 때 주로 사용되는 방식이지만, GET 방식은 URL에 데이터를 포함하여 요청하기 때문에, URL에 데이터가 노출되어 보안에 취약합니다!!
예시를 하나 들어보겠습니다!
버튼을 누르면 랜덤으로 맥주를 추천해주는 앱을 하나 만든다고 가정해보겠습니다.
그럼 이 앱에는 버튼을 누를 때마다 맥주 이름과, 맥주 이미지, 맥주에 대한 설명이 바뀌어야겠죠? 이 값을 API를 통해서 가져올 겁니다!
사용한 오픈소스 라이브러리는 Alamofire와 SwiftyJSON 그리고 Kingfisher 3가지의 오픈소스 라이브러리를 사용했습니다.
1. 맥주 추천 뷰 컨트롤러를 하나 만들고, 맥주 이름은 Label, 맥주 이미지는 ImageView, 맥주에 대한 설명은 TextView, 맥주 랜덤 추천 Button을 스토리보드 상에 만들었습니다.
2. 가져온 오픈소스 라이브러리에 대한 import를 필수로 해주고, 각 오브젝트를 연결해 줍니다.
저 같은 경우에는 Snippet을 이용해 저장을 해놨습니다.
3. Postman 혹은 Insomnia를 이용해 URL을 입력해서 API를 가져옵니다!
url : https://api.punkapi.com/v2/beers/random
여기 한 가지 주의해야 할 점은 맥주의 "name"과 "description", "image_url"은 2차원 배열 안에 있다는 것입니다!
2차원 배열 안에 있는 정보를 가져와야 하기 때문에 주의해야 합니다!
4. 오픈소스 라이브러리를 이용해 가져올 수 있다! (func requestBeerAPI()는 버튼이 눌렸을 때 @IBAcion에 실행시켜주면 되겠죠?)
- beerName 은 json의 0번째 배열의 "name"값을 String 타입으로 가져온다.
- beerDescription 은 json의 0번째 배열의 "description"값을 String 타입으로 가져온다.
- beerImageView는 json의 0번째 배열의 "image_url"값을 String 타입으로 가져와 Kingfisher를 통해 ImageView에 넣어준다.
🍎 추가 꿀팁!!
SSL 인증이 되지 않는 사이트에 관해서는 기본적으로 막고 있습니다.
Info.plist 에 들어가서 다음과 같이 설정을 진행해주면, https:// 와 http:// 둘 다 사용이 가능합니다!
info.plist -> Information Property List -> App Transport Security Settings -> Allow Arbitrary Loads 값을 YES로 바꿔주면 됩니다.
이상 HTTP를 통한 통신, API에 대한 포스팅을 마치겠습니다!
다음 포스팅에서는 더욱 알찬 내용 가지고 돌아오겠습니다!
'iOS_Swift 앱개발👍' 카테고리의 다른 글
[iOS_Swift] UIView를 Cell로 사용하기 (테이블뷰 안에 컬렉션뷰) _ 17 (30) | 2022.08.09 |
---|---|
[iOS_Swift] APIManager를 만들어보자! (feat. 고차함수) _ 16 (1) | 2022.08.07 |
[iOS_Swift] PickerView의 기본 _ 14 (0) | 2022.07.28 |
[iOS_Swift] Xcode 단축키 꿀팁 모음 _ 13 (31) | 2022.07.25 |
[iOS_Swift] CollectionView (컬렉션 뷰) 기본기능 _ 12 (30) | 2022.07.21 |