api 통신을 하던 도중! 이미지 파일을 body에 post해야 하는 일이 생겼다!
이 중에서 나는 multipart/form-data에 대해 알아볼 것이다.

Body - form-data에 file을 선택주고 value 값을 누르면 다음과 같이 뜰 것이다.

이미지를 선택한 후 업로드 하면!

이제 send를 누르면!

extension EditProfileViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    /// Image picker
    func openImagePicker() {
        let imagePicker = UIImagePickerController()
        imagePicker.delegate = self
        imagePicker.sourceType = .photoLibrary
        imagePicker.allowsEditing = true
        present(imagePicker, animated: true, completion: nil)
    }
    /// Camera picker
    func openCamera() {
        let imagePicker = UIImagePickerController()
        imagePicker.delegate = self
        imagePicker.sourceType = .camera
        imagePicker.allowsEditing = true
        present(imagePicker, animated: true, completion: nil)
    }
    // UIImagePickerControllerDelegate methods
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        if let editedImage = info[.editedImage] as? UIImage {
            uploadImageToServer(image: editedImage)
        } else if let originalImage = info[.originalImage] as? UIImage {
           uploadImageToServer(image: originalImage)
        }
        picker.dismiss(animated: true, completion: nil)
    }
    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        picker.dismiss(animated: true, completion: nil)
    }
}
func uploadImageToServer(image: UIImage) {
    let uploadURL = "url"
    guard let imageData = image.jpegData(compressionQuality: 1.0) else {
        print("Failed to convert image to data.")
        return
    }
    var header: HTTPHeaders = ["Content-Type": "multipart/form-data"]
    AF.upload(
        multipartFormData: { multipartFormData in
            multipartFormData.append(imageData, withName: "file", fileName: "profileImg.jpg", mimeType: "image/jpeg")
            // multipartFormData.append(Data, withName: "key")
        },
        to: uploadURL,
        method: .post,
        headers: header)
    .response { response in
        // Handling after upload completion
        debugPrint(response)
    }
}
이렇게 하면 success 200이 뜨는 걸 확인할 수 있다~~!