네이버 오픈 API 중 하나인 맵의 지역 검색 예제를 작성하려고 합니다.
사실 네이버디벨로퍼 도큐먼트에 Swift만 예제가 없기에
내가 보려고 작성하는 거는 안 비밀 ㅎ
준비 사항이나 대략적인 사용법은 아래의 네이버 공식 디벨로퍼 도큐먼트에 작성이 되어있으므로
참고해 주시면 감사하겠습니다.
https://developers.naver.com/docs/serviceapi/search/local/local.md#%EC%A7%80%EC%97%AD
검색 > 지역 - Search API
검색 > 지역 지역 검색 개요 개요 검색 API와 지역 검색 개요 검색 API는 네이버 검색 결과를 뉴스, 백과사전, 블로그, 쇼핑, 영화, 웹 문서, 전문정보, 지식iN, 책, 카페글 등 분야별로 볼 수 있는 API
developers.naver.com
그럼 바로 예제코드를 확인해 보자
import UIKit
let clientId: String = "xxxxxxxx" //애플리케이션 클라이언트 아이디
let clientSecret: String = "xxxxxxxx" //애플리케이션 클라이언트 시크릿
// 헤더에 기입할 변수
let requestHeaders: [String: String] = ["X-Naver-Client-Id": clientId, "X-Naver-Client-Secret": clientSecret]
func localSearch() {
var str: String? = "그린팩토리" // 지역 검색할 값
guard let text = str else{
return
}
// 그냥 한글을 넘겨주면 값이 깨질 수 있으니 반드시 인코딩 작업을 해주자
let encodedStr = text.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
var apiURL: String = "https://openapi.naver.com/v1/search/local.json?query=" + encodedStr // JSON 결과
//String apiURL = "https://openapi.naver.com/v1/search/blog.xml?query="+ text; // XML 결과
get(apiURL,requestHeaders)
}
func get (_ apiUrl:String , _ requestHeaders: [String: String] ) -> Void{
let url = URL(string: apiUrl)
print("get - url: \(String(describing: url))")
var request = URLRequest(url: url!)
request.httpMethod = "GET" // 네이버 도큐멘트에도 나와있듯이 HTTP메서드는 GET 으로
request.allHTTPHeaderFields = requestHeaders // 헤더값도 물론 도큐멘트내용대로 서식에 맞춘값을 기입해주자
// URLSession 객체를 통해 전송, 응답값 처리
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
// 서버가 응답이 없거나 통신이 실패
if let e = error {
NSLog("An error has occured: \(e.localizedDescription)")
return
}
// 응답 처리 로직
DispatchQueue.main.async() {
// 서버로부터 응답된 스트링 표시 ( JSON형태로 프린트에 찍히는걸 확인 할 수 있을 것이다 )
let outputStr = String(data: data!, encoding: String.Encoding.utf8)
print("result: \(outputStr!)")
}
}
// task 실행
task.resume()
}
localSearch()
위의 코드는 플레이그라운드에서 바로 복사 붙여 넣기 하면 문제없이 실행 가능합니다.
물론 클라이언트 아이디, 시크릿은 따로 설정해야겠죠
코드는 완벽하게 짜기보다는 실행을 목적으로 두고 작성하였기에
우선은 테스트의 목적으로 사용해 보는 건 어떨까요?
이상 끝!
'Swift' 카테고리의 다른 글
[Swift] 카카오 API를 이용한 중부원점(EPSG:2097) 좌표를 위도·경도(WGS84)로 변환하는 방법 (0) | 2023.03.08 |
---|---|
[Swift]SQLite3사용 예제 (feat.FMDB) (0) | 2023.02.10 |
[Swift] 콤팩트맵(compactMap),플랫맵(flatMap) (0) | 2023.01.04 |
[Swift] 클로저의 다양한 표현식 (0) | 2023.01.02 |
[Swift]맵,필터,리듀스 - 고차함수 (0) | 2023.01.02 |