일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Storyboard
- UIKit
- 어플리케이션
- Apple
- PyQt5
- Xcode
- TableView
- modal
- Chrats
- library
- PyQt
- alamofire
- UIButton
- button
- Python
- cocoapods
- UITableView
- ios
- Android
- androidstudio
- graph
- 개발
- ui
- Chart
- 라이브러리
- 개발자
- charts
- 그래프
- kotlin
- Swift
Archives
- Today
- Total
Jiwift
[iOS/Swift] Alamofire body와 query 데이터 동시에 전송하기 본문
반응형

짧고 간결하게 알아보는 Alamofire
개발하다가 Body와 Query를 동시에 전송해야하는 일이 있었습니다. 근데 제 머리로는 간편하게 하는 방법이 생각나지 않았으나 그래도 먼길 돌아 해결한 것 같아 공유하려고합니다.
func dictionaryToJsonString(dictionary: [String: Any]) -> String? {
do {
let jsonData = try JSONSerialization.data(withJSONObject: dictionary, options: [])
if let jsonString = String(data: jsonData, encoding: .utf8) {
return jsonString
}
} catch {
print("Error converting dictionary to JSON string: \(error)")
}
return nil
}
우선 Body에 넣을 파라메터를 Json String 형식으로 변환하기 위한 함수를 작성했습니다.
let headers: HTTPHeaders = ["Content-Type": "application/json",
"Accept": "application/json"]
// Body 데이터
let parameters: Parameters = ["userId": "swift",
"name": "kimjitae",
"amount": 1000,
"age": 27]
// 쿼리 데이터
let queryParam: Parameters = ["game": "KartRider"]
헤더와 보내고싶은 파라메터들을 정의했습니다.
// Request 생성
var request: URLRequest = URLRequest(url: URL(string: url)!)
// Method 설정
request.httpMethod = HTTPMethod.post.rawValue
// 헤더
request.headers = headers
// 파라메터 Json String 변환
if let location = self.dictionaryToJsonString(dictionary: parameters) {
// here body is already serialized to Json
request.httpBody = Data(location.utf8)
}
do {
// 쿼리 데이터 추가
request = try URLEncoding(destination: .queryString).encode(request, with: queryParam)
} catch {
print("Error creating request: \(error)")
}
이제 보내기 위한 Request를 생성합니다. URL을 넣어주고, 각각 옵션에 맞게 설정합니다. 중간에 Body에 넣을 파라메터를 Json String으로 변환해주고 쿼리 파라메터도 URLEncoding 방식으로 추가합니다.
AF.request(request)
.validate(statusCode: 200..<300)... 생략
그리고 생성한 Request를 Alamofire를 통해서 전송하면 됩니다. 통신 후 처리는 생략하였습니다.
끝
반응형
'라이브러리 > Alamofire' 카테고리의 다른 글
[iOS/Swift] Alamofire Query String 보내기 쿼리 전송 (0) | 2023.11.05 |
---|---|
[iOS/Swift] Alamofire Body JSON 보내기 (0) | 2023.11.04 |
[iOS/Swift] Alamofire Parameter 전송하기 파라메터 사용 (0) | 2023.11.04 |
[iOS/Swift] Alamofire Header 적용 HTTPHeaders 사용 (0) | 2023.11.03 |
[iOS/Swift] Alamofire Array JSON 데이터 파싱하기(리스트 형식 데이터) (0) | 2023.11.01 |