티스토리 뷰

IT Story/TIP

MSSQL 웹(Get/Post)통신 : SQL_APIConsumer 활용

행복한소식까치 2020. 8. 21. 11:31
반응형

 

2020/08/20 - [IT Story/TIP] - MSSQL 웹(Get/Post)통신 : SQL_APIConsumer

 

MSSQL 웹(Get/Post)통신 : SQL_APIConsumer

공공Data 포탈이나 다른 시스템과 연동시 XML 또는 Json으로 Data를 Web을 통해 받아 오는 경우가 종종 있습니다. 웹방식의 프로그램을 작성 할 경우 바로 받아서 사용하면 되지만 , 웹방식으로 받은 D

kindmaster.tistory.com

위 포스팅 내용을 먼저 보고 보세요  위 내용을 알고 있다는 전제하에서 설명합니다.

 

1.아래사이트에서 도로명 주소 API신청

http://www.juso.go.kr/addrlink/main.do?cPath=99MM

 

도로명주소 개발자센터

 

www.juso.go.kr

API 서비스 신청하기 클릭 후 아래 정보를 입력 후 신청합니다.

2. 신청이 완료 되면 아래 SP를 생성하여 사용

create Proc SP_Road_API
	@iSearch		Varchar(200),
	@iCurrentPage	VarChar(3),
	@iPageCount		Varchar(3)
AS
-- Set Header
Declare @header nvarchar(max) = '[{
								  "Name": "X-RapidAPI-Host",
								  "Value" :"restcountries-v1.p.rapidapi.com"
								},{
								  "Name": "X-RapidAPI-Key",
								  "Value" :"c56b333d25mshdbfec15f02f096ep19fa94jsne5189032cf7d"
								}]';

Declare @totalCount		Int

Declare @wurl varchar(500) 	, @murl varchar(500)
Declare @ts		as table(Xml_Table nvarchar(max))
Declare @Pum_NM as table(Pum_Nm nvarchar(100))
Declare @XML_DATA nvarchar(max)
DECLARE @docHandle int;   

IF Isnull(@iPageCount,0) = 0
   Select @iPageCount = 10




Select @wurl= 'http://www.juso.go.kr/addrlink/addrLinkApi.do?confmKey=APIKey'
Select @wurl= @wurl+'&currentPage='+@iCurrentPage
Select @wurl= @wurl+'&countPerPage='+@iPageCount
Select @wurl= @wurl +'&keyword='+@iSearch+'&resultType=xml'


-- &pageidx=1

				 Delete @ts From @ts
				 insert into @ts
				 exec [dbo].APICaller_GET_headers @wurl,@header
				 Select @XML_DATA = Replace(Replace(Xml_Table,'<![CDATA[',''),']]>','') From @ts
				 Select @XML_DATA = Replace(@XML_DATA,'<?xml version="1.0" encoding="UTF-8"?>','')
				-- select @XML_DATA
				

				 EXEC sp_xml_preparedocument @docHandle OUTPUT, @XML_DATA;
				 
					Select @totalCount = Isnull(totalCount ,0)
					  from OPENXML (@docHandle, '/results/common',3)
					  With(totalCount Int)

			

				 select roadAddr, jibunAddr, ZipNo, admCd, totalCount = @totalCount
				   from OPENXML (@docHandle,'/results/juso',3)
				  With( roadAddr  Varchar(300)		-- 전체 도로명 주소
				    ,	jibunAddr Varchar(300)		-- 지번주소
					,	zipNo	  Varchar(6)		-- 우편번호
					,	admCd	  Varchar(20)		-- 행정구역코드
					  )

EXEC sp_xml_removedocument @docHandle;

 

3. SP 사용방법

   넘기는 입력 값 설명

@iSearch Varchar(200),         -- 검색어
@iCurrentPage VarChar(3),    -- 호출페이지
@iPageCount Varchar(3)       -- 한페이지당 출력 숫자(MAX: 100)

 

사용예시)
 Exec SP_Road_API  '동래구 낙민동', '1','10'

 결과값

 

4. DB와 연동하여 아래와 같이 C/S  프로그램에 적용

 

반응형
댓글