데이터만 전달해서 결과 도출
서버에 새로운 데이터를 추가할 때
그냥 데이터만 전달해서 결과를 도출할 때에도 사용
서버에 저장된 데이터를 업데이트
Put과 비슷
삭제할 때
자주 사용하지 않음
아이디, 비밀번호와 같은 중요한 보안 정보는 Params로 전달해서는 안된다.
이 때는 Body에 담아서 전달해야 한다.
참고로 Get 메소드에서는 Body를 사용하지 않는다.
Post 요청
func sendLoginRequest(id: String, password: String){
guard let url = URL(string: "https://kxapi.azurewebsites.net/login?apiKey=") else {
return
}
let body = LoginPostBody(id: id, password: password)
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.httpBody = try? JSONEncoder().encode(body)
let session = URLSession.shared
let task = session.dataTask(with: request) { data, response, error in
if let error{
print(error)
return
}
guard let httpResponse = response as? HTTPURLResponse else{
self.showAlert(message: "잘못된 응답")
return
}
guard httpResponse.statusCode == 200 else{
self.showAlert(message: "요청 실패 - \(httpResponse.statusCode)")
return
}
guard let data else{
self.showAlert(message: "데이터 없음")
return
}
do{
let decoder = JSONDecoder()
let response = try decoder.decode(LoginResponse.self, from: data)
if response.code == 200{
//로그인 성공
DispatchQueue.main.async{
self.resultLabel.text = "로그인 성공"
}
} else {
DispatchQueue.main.async{
self.resultLabel.text = response.message
}
self.showAlert(message: response.message ?? "로그인 실패")
}
}catch{
self.showAlert(message: error.localizedDescription)
}
}
task.resume()
}
json의 Content-Type은 application/json"
인데, 이것도 표준으로 정해져 있는 이름이다.
이런 이름을 MIME Type
(Multipurpose Internet Mail Extensions) 라고 한다.
type/subtype
이외에 오디오나 이미지 등도 MIME Type 존재
우리가 api를 통해서 데이터를 주고받을 때는 application type 사용
보통은 요청과 응답 모두 같은 타입을 사용하지만, 아닌 경우도 있다.
안녕하세여 여쭤볼게있는데 ㅠㅠ010-3948-9826 이나 카톡 thegood12 연락한통주시면 감사해요 ㅠㅠ죄송합니당