# Open API -> ServiceKey 발급 필요할 수 있음
# 요청 URL에서 Type 파라미터는 json으로
# .ToString으로 강제 형변환 후 출력 패널에서 확인 가능
<목차>** UiPath와 API |
** UiPath와 API
지금까지 UiPath에서 Get Text, 데이터 스크래핑 등
여러 가지 데이터 추출 방법을 다루었다.
하지만 언제나 UI 상에서의 정보가 정확한 것은 아니다.
UI로 사용자가 보는 화면은
Server에 저장된 HTML 문서를 Browser가 해석한 결과이기 때문이다.
따라서!
UI에 나타난 데이터보다는,
Server가 직접 담고 있는 데이터가
가장 최신의 것이자, 정확한 것이라고 할 수 있다.
(물론 Server가 다운되어 데이터를 받아올 수 없는 경우를 제외하고 말이다)
! Server가 가지고 있는 데이터에 접근하기 위해서는 API를 이용해야 한다.
오늘은 UiPath를 이용, API를 통해 Server로부터 직접 데이터를 받아오는 방법에 대해 다루어 보고자 한다.
1. API란?
1) 정의
* Application Programming Interface의 약자로, 소프트웨어 애플리케이션 간에 상호 작용하기 위한 인터페이스를 의미.
* API는 라이브러리, 프레임워크 또는 웹 서비스와 같은 다양한 형태로 제공될 수 있음.
2) 사용 목적
- 기능 공유: 다른 소프트웨어 애플리케이션에서 기능을 공유하고 활용할 수 있도록 함. ex) 각종 클라우드 서비스 제공 업체들이 API를 통해 저장소, 컴퓨팅 리소스, 인증 등의 기능을 제공
- 통합: 다른 시스템 간의 통합을 용이하게 함. ex) 다른 업체의 결제 시스템을 통합하여 사용자가 특정 사이트에서 결제할 수 있도록 하는 데 사용
- 개발자 커뮤니케이션: 소프트웨어 개발자 간의 커뮤니케이션을 용이하게 함. 개발자들은 API를 사용하여 다른 개발자가 작성한 코드를 이해하고, 상호 작용할 수 있음.
- 사용자(Client)와 Server 간 요청과 응답에 따른 데이터의 이동 경로로 이용
3) API 시각화
* 데이터를 요청하는 주체, 즉 사용자는 Client로서 Server에게 원하는 데이터를 요청한다.
=> Server는 요청을 해석, 사용자에게 데이터를 담아 응답해준다.
* API는 이 둘 간의 의사소통에 있어 연결다리 역할을 하는 것이다.
2. 데이터를 받는 방식
1) GET 방식
: Server가 보유한 데이터를 요청, Server가 보내주는 데이터를 받는다
: Request - Response 의 관계이다
2) POST 방식
: 나의 데이터를 전송하는 방식.
: 주로 Form을 작성한 데이터, 즉 로그인, 회원가입, 글 작성 등의 작업에서 발생하는 데이터를 Server에 전송할 때 쓰인다.
3. UiPath에서의 API 사용법
1) 패키지 설치
: UiPath에서는 WebAPI의 패키지 내의 액티비티들을 이용하여 API를 이용할 수 있다.
2) 패키지 내 액티비티 이용
(1) HTTP Request 액티비티를 이용, Response 를 받아온다.
* 속성 패널에서 요청 URL 을 입력, 응답 내용을 받을 변수를 선언해 준다.
* 응답 내용은 String 타입이며, JSON 형태의 문자열이다.
* Str_Response -------------------------------------------------------------------------------
"{\"response\":{\"body\":{\"totalCount\":40,\"items\":[{\"so2Grade\":\"1\",\"coFlag\":null,\"khaiValue\":\"77\",\"so2Value\":\"0.003\",\"coValue\":\"0.4\",\"pm25Flag\":null,\"pm10Flag\":null,\"o3Grade\":\"2\",\"pm10Value\":\"29\",\"khaiGrade\":\"2\",\"pm25Value\":\"27\",\"sidoName\":\"서울\",\"no2Flag\":null,\"no2Grade\":\"1\",\"o3Flag\":null,\"pm25Grade\":\"2\",\"so2Flag\":null,\"dataTime\":\"2024-02-07 21:00\",\"coGrade\":\"1\",\"no2Value\":\"0.016\",\"stationName\":\"중구\",\"pm10Grade\":\"1\",\"o3Value\":\"0.035\"},{\"so2Grade\":\"1\",\"coFlag\":null,\"khaiValue\":\"52\",\"so2Value\":\"0.003\",\"coValue\":\"0.6\",\"pm25Flag\":null,\"pm10Flag\":null,\"o3Grade\":\"1\",\"pm10Value\":\"28\",\"khaiGrade\":\"2\",\"pm25Value\":\"23\",\"sidoName\":\"서울\",\"no2Flag\":null,\"no2Grade\":\"1\",\"o3Flag\":null,\"pm25Grade\":\"2\",\"so2Flag\":null,\"dataTime\":...}
--------------------------------------------------------------------------------------------------------------------------------------------------------------
(2) Deserialize JSON 액티비티를 이용, JSONObject 개체로 Str_Response를 가공하여 준다.
=> 이는 DataTable을 Output Data Table 액티비티를 이용하여 String 타입화 하는 것과 같은 이치이다.
=> JSON 개체로 변환 후 받아줄 변수는 JObj_GetJson 으로 선언,
=> 변수의 데이터 타입(TypeArgument)은 상기와 같이 JObject로 지정한다.
(3) JSON 개체에 대하여 원하는 출력값으로 접근한다.
: 위의 JSON 데이터를 살펴보면 원하는 데이터는 response > body > items 의 Value 이므로
>>> JObj_GetJson.SelectToken("response.body.items") 로 접근한다.
(또는 경우에 따라 JObj_GetJson("response.body.items")도 가능하다.)
(4) 데이터테이블화 하기
* 중요한 것은 items는 [ ] 로 이루어져, 데이터 테이블 형식이라는 것이다.
=> 즉, DateTable 데이터 형태로 변환, 엑셀에 Write Range, 또는 Write CSV 가 가능하다는 것이다.
* 다시 한번 Deserialize JSON을 수행, TypeArgument를 DataTable 로 지정
=> DataTable 타입의 반환값을 받아줄 변수 DT_GetJson을 선언해준다.
(4) csv 또는 xlsx 파일로 변환
* 마지막으로 Write CSV 액티비티를 이용, DT_GetJson을 전달해 준다.
* 최종 파일 확인
최종적으로 DT가 입력된 csv 파일을 확인할 수 있다.
4. 사용한 Activity 정리
1) HTTP Request
: 요청 URL을 전달, 응답 내용을 받아줄 변수를 선언해주어야 한다.
2) Deserialize JSON
: JSON 형태의 문자열을 JSON 개체로 출력
: TypeArgument 속성에서 JSON 개체의 데이터 타입을 결정해주어야 함.
: 단, 데이터타입은 JsonObject 또는 상황에 따라 DataTable 데이터 타입도 가능
3) Write CSV
: 파일 생성 경로 지정, 확장자 .csv 까지 적어주어야 함.
: DataTable 타입의 변수를 전달
'IT > RPA' 카테고리의 다른 글
[RPA 개발] #2-2 테이블 형식 데이터 처리 - 데이터 스크래핑 지원 형식이 아닌 경우 (2편) (0) | 2024.02.12 |
---|---|
[RPA] #12 UiPath Python 연동하기, "Python Scope:Error initializing Python engine" 해결방법 (1) | 2024.02.10 |
[RPA 개발] #2-1 테이블 형식 데이터 처리 - 데이터 스크래핑 지원 형식이 아닌 경우 (1편) (1) | 2024.02.05 |
[RPA 개발] #1 파일 저장 팝업 시간차 관련 Issue - While과 Element Exists를 활용한 예외처리 (1) | 2024.02.02 |
[RPA][🌟] #10 UiPath 변수(Variable) 와 인수(Argument) 총정리 (3) | 2024.01.31 |