```swift= import Foundation enum Const { static let baseURL = "https://market-training.yagom-academy.kr/api/products" static let imageURL = "https://s3.ap-northeast-2.amazonaws.com/media.yagom-academy.kr/training-resources/3/thumb/87aa7c8966df11ecad1df993f20d4a2a.jpg" } class Network { let boundary = UUID().uuidString func searchSecretKey() { guard let url = URL(string: Const.baseURL + "/2186/secret") else { return } var request = URLRequest(url: url) request.httpMethod = "POST" request.setValue("application/json", forHTTPHeaderField: "Content-Type") request.addValue("cd706a3e-66db-11ec-9626-796401f2341a", forHTTPHeaderField: "identifier") request.httpBody = """ {"secret": "password"} """.data(using: .utf8) URLSession.shared.dataTask(with: request) { data, response, error in guard error == nil else { return } guard let response = response as? HTTPURLResponse else { return } print(response.statusCode) print(String(data: data!, encoding: .utf8)) }.resume() } func post() { guard let url = URL(string: Const.baseURL) else { return } print(boundary) var request = URLRequest(url: url) request.httpMethod = "POST" request.addValue("cd706a3e-66db-11ec-9626-796401f2341a", forHTTPHeaderField: "identifier") request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type") request.httpBody = self.createHttpBodyData() URLSession.shared.dataTask(with: request) { data, response, error in guard error == nil else { return } guard let response = response as? HTTPURLResponse else { return } print(response.statusCode) }.resume() } private func createHttpBodyData() -> Data { let jsonData = """ { "name": "TestProduct", "amount": 1000, "currency": "KRW", "secret": "password", "description: "desc" } """.data(using: .utf8) let filename = Const.imageURL var data = Data() data.append("\r\n--\(boundary)\r\n".data(using: .utf8)!) data.append("Content-Disposition: form-data; name=\"params\";".data(using: .utf8)!) data.append("Content-Type: application/json\r\n\r\n".data(using: .utf8)!) data.append(jsonData!) data.append("\r\n--\(boundary)--\r\n".data(using: .utf8)!) data.append("\r\n--\(boundary)\r\n".data(using: .utf8)!) data.append("Content-Disposition: form-data; name=\"images\";".data(using: .utf8)!) data.append("Content-Type: image/jpeg\r\n\r\n".data(using: .utf8)!) data.append(try! Data(contentsOf: URL(string: Const.imageURL)!)) data.append("\r\n--\(boundary)--\r\n".data(using: .utf8)!) /* --boundary Content-Disposition: form-data; name=params Content-Type: image/png 이미지 데이터~ --boundary-- */ return data } } ```