iOS에서 http 요청을 하기 위해 DataTask와 세션을 사용할 것입니다. 구성, 세션, URL, 요청 및 dataTask 개체를 생성합니다. 우리가 거쳐야 할 단계를 살펴보겠습니다.
HTTP 요청은 다양한 유형이 될 수 있으며 서버에 어떤 종류의 요청을 하려는지에 따라 다릅니다. 다음은 기본 요청 유형입니다.
"GET","POST","PUT","DELETE" , API에 따라 이들 중 하나를 사용할 수 있습니다. 기본 사항은 아래에 표시된 각 요청 유형에 대해 동일하게 유지됩니다. DELETE 유형의 요청으로 이러한 예를 살펴보겠습니다.
-
우선 기본 구성인 세션 개체를 만들어야 합니다.
let configuration = URLSessionConfiguration.default let session = URLSession(configuration: configuration)
-
그런 다음 필요한 유형의 URL 요청을 만들어야 합니다. 가져오기, 게시, 삭제 또는 넣을 수 있습니다. 이 예에서는 '삭제' 유형이 표시됩니다.
let url = URL(string: URLString) //let url = NSURL(string: urlString as String) var request : URLRequest = URLRequest(url: url!) request.httpMethod = "DELETE" request.addValue("application/json", forHTTPHeaderField: "Content-Type") request.addValue("application/json", forHTTPHeaderField: "Accept")
-
요청 객체를 생성했으면 위에서 방금 생성한 URL을 사용하여 dataTask를 수행해야 합니다. 이것이 우리의 완전한 dataTask 메소드가 지금의 모습이어야 합니다.
let dataTask = session.dataTask(with: url!) { data,response,error in guard let httpResponse = response as? HTTPURLResponse, let receivedData = data else { print("error: not a valid http response") return } switch (httpResponse.statusCode) { case 200: //success response. break case 400: break default: break } } dataTask.resume()
-
이제 이것을 함수에 포함하고 코드에서 사용할 수 있습니다.
hitAPI(_for URLString:String) { let configuration = URLSessionConfiguration.default let session = URLSession(configuration: configuration) let url = URL(string: URLString) //let url = NSURL(string: urlString as String) var request : URLRequest = URLRequest(url: url!) request.httpMethod = "DELETE" request.addValue("application/json", forHTTPHeaderField: "Content-Type") request.addValue("application/json", forHTTPHeaderField: "Accept") let dataTask = session.dataTask(with: url!) { data,response,error in // 1: Check HTTP Response for successful GET request guard let httpResponse = response as? HTTPURLResponse, let receivedData = data else { print("error: not a valid http response") return } switch (httpResponse.statusCode) { case 200: //success response. break case 400: break default: break } } dataTask.resume() }
참고 :info.plist 파일에서 일부 API에 액세스하려면 Transport Security 예외를 허용해야 할 수도 있습니다.
일부 데이터를 삭제하려면 API가 필요하므로 이 예에서는 출력이 표시되지 않습니다.