```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
}
}
```