행위

오라클 REST API

DB CAFE

thumb_up 추천메뉴 바로가기


1 오라클 REST API 사용법[편집]

1.1 빠른 시작[편집]

1.1.1 1단계: cURL 설치[편집]

이 문서에 사용된 예제에서는 cURL 명령줄 도구를 사용하여 Oracle Database REST API에 액세스하는 방법을 보여줍니다. REST 서버에 안전하게 연결하려면 SSL을 지원하는 cURL 버전을 설치해야 합니다.

시스템에 cURL을 설치하려면:

  1. 브라우저에서 cURL 홈 페이지( http://curl.haxx.se) 로 이동한 후 탐색 메뉴에서 다운로드를 클릭하세요 .
  2. cURL 릴리스 및 다운로드 페이지에서 운영 체제에 해당하는 cURL 소프트웨어의 SSL 지원 버전을 찾습니다. 링크를 클릭하여 ZIP 파일을 다운로드하고 원하는 폴더에 실행 파일을 추출합니다.

Windows 명령 셸에서만 cURL을 실행하는 경우 SSL CA(인증 기관) 파일 또는 번들을 제공하여 Verisign CS 인증서에 대해 인증해야 합니다.

  1. cURL CA Extract 페이지( http://curl.haxx.se/docs/caextract.html )로 이동하여 cURL을 설치한 폴더에 cacert.pem SSL CA 인증서 파일을 다운로드합니다 .
  2. 명령 창을 열고 cURL을 설치한 디렉터리로 이동한 후 cURL 환경 변수 를 CURL_CA_BUNDLESSL CA 인증서 파일 위치로 설정합니다. 예를 들어 Windows 시스템에서는 다음을 입력합니다.
C:\curl> set CURL_CA_BUNDLE=cacert.pem

이제 cURL을 사용하여 데이터베이스 REST API 인스턴스에 REST 요청을 보낼 준비가 되었습니다. 인증 및 cURL 사용을 참조하세요 .


1.2 지원되는 방법[편집]

다음 표에 요약된 대로 표준 HTTP 메소드 요청을 사용하여 Oracle Database REST API 인스턴스를 생성, 확인, 삭제 및 관리할 수 있습니다.

방법 설명
DELETE Oracle Database REST API 인스턴스를 삭제합니다. 예를 들어 데이터베이스 사용자 또는 데이터 펌프 작업이 있습니다.
GET 모든 Oracle Database REST API 인스턴스, 특정 인스턴스 또는 인스턴스에 영향을 미치는 작업에 대한 정보를 검색합니다.
POST 예를 들어 Oracle Database REST API 인스턴스를 생성, 중지, 시작 또는 다시 시작합니다.
PUT 예를 들어 Oracle Database REST API를 확장합니다.
PATCH 패치는 그리드 인프라 또는 데이터베이스에서 Fleet Patching and Provisioning 서버를 사용하여 업그레이드 작업을 수행하는 데 사용됩니다.

1.3 상태 코드[편집]

데이터베이스 REST API 엔드포인트를 호출하면 응답 헤더는 다음 표에 정의된 표준 HTTP 상태 코드 중 하나를 반환합니다.

HTTP 상태 코드 설명
200 OK 요청이 성공적으로 완료되었습니다. 성공 GET또는 POST메서드에 대해 200 상태가 반환됩니다.
201 Created 요청이 이행되어 새 리소스가 생성되었습니다. 응답에는 새로 생성된 리소스에 대한 표준 URI가 포함된 Location 헤더가 포함됩니다.

응답이 반환되기 전에 완료된 동기 리소스 생성 또는 비동기 리소스 생성에서 201 상태가 반환됩니다.

202 Accepted 처리 요청이 승인되었지만 처리가 완료되지 않았습니다. 요청은 실제로 처리가 이루어지는 시점에 허용되지 않을 수 있으므로 최종적으로 조치가 취해질 수도 있고 이루어지지 않을 수도 있습니다.

비동기( __detached=true) 리소스 생성(예: 애플리케이션 배포 시) 또는 업데이트(예: 애플리케이션 재배포 시)를 지정할 때 작업이 아직 진행 중이면 202가 반환됩니다. 인 경우 __detached=false기본 작업이 합리적인 시간 내에 완료되지 않으면 202가 반환될 수 있습니다.

응답에는 작업이 완료된 시기를 확인하기 위해 클라이언트가 폴링해야 하는 작업 리소스의 Location 헤더가 포함되어 있습니다. 또한 작업의 현재 상태를 포함하는 엔터티를 반환합니다.

400 Bad Request 요청에 누락되거나 잘못된 정보(예: 입력 필드의 유효성 검사 오류, 필수 값 누락 등)가 포함되어 있어 요청을 처리할 수 없습니다.
401 Unauthorized 요청이 승인되지 않았습니다. 이 요청에 포함된 인증 정보가 누락되었거나 유효하지 않습니다.
403 Forbidden 사용자를 인증할 수 없습니다. 사용자에게 이 요청을 수행할 수 있는 권한이 없습니다.
404 Not Found 요청에 존재하지 않는 리소스 URI가 포함되어 있습니다.
405 Method Not Allowed 요청( DELETE, GET, POST, PUT)에 지정된 HTTP 동사는 이 요청 URI에 지원되지 않습니다.
406 Not Acceptable 이 요청으로 식별된 리소스는 요청의 Accept 헤더에 있는 미디어 유형 중 하나에 해당하는 표현을 생성할 수 없습니다. 예를 들어 클라이언트의 Accept 헤더 요청 XML이 반환되지만 리소스는 JSON만 반환할 수 있습니다.
415 Not Acceptable 클라이언트의 ContentType 헤더가 올바르지 않습니다. 예를 들어 클라이언트가 요청을 XML로 보내려고 시도하지만 리소스는 JSON만 허용할 수 있습니다.
500 Internal Server Error 서버에서 요청을 이행하지 못하게 하는 예상치 못한 상황이 발생했습니다.
503 Service Unavailable 일시적인 과부하 또는 서버 점검으로 인해 서버가 요청을 처리할 수 없습니다. <ProductName> REST 웹 애플리케이션이 현재 실행되고 있지 않습니다.

1.4 인증[편집]

데이터베이스 REST API는 Verisign에서 발행한 인증 기관(CA) 인증서를 사용하여 클라이언트가 서버에 안전하게 연결할 수 있도록 합니다.


"데이터베이스 REST API 인스턴스를 생성, 관리 및 삭제하기 위한 적절한 로그인 자격 증명이 있는지 확인하세요."


HTTPS를 통해 데이터베이스 REST API 리소스에 액세스하고 인증을 위해 다음 정보를 제공해야 합니다.

  • Verisign CA 인증서에 대해 인증하기 위한 SSL 인증 기관(CA) 인증서 파일 또는 번들입니다.
  • 데이터베이스 REST API 계정의 사용자 이름과 비밀번호입니다.
  • ID 도메인 ID를 식별하기 위한 사용자 정의 헤더 X-ID-TENANT-NAME.

예를 들어 cURL을 사용하여 인증하려면 다음을 수행하세요.

  • -u cURL 옵션을 사용하여 사용자 이름과 비밀번호(예: 사용자 이름 및 userPassword1!)를 전달합니다.
  • X-ID-TENANT-NAME 사용자 정의 헤더를 전달하려면 -H cURL 옵션을 사용하십시오.
  • Windows 명령 셸에서만 cURL을 실행하는 경우 cURL 환경 변수 CURL_CA_BUNDLE을 SSL CA(인증 기관) 인증서 파일 또는 번들의 위치로 설정하여 Verisign CA 인증서에 대해 인증합니다. 또는 --cacert 명령줄 옵션을 사용하여 명령줄에서 로컬 CA 인증서 번들의 위치를 ​​지정할 수 있습니다.

http://curl.haxx.se/docs/caextract.html 에서 SSL CA 인증서 번들을 다운로드하거나 직접 제공할 수 있습니다. cURL을 사용한 CA 인증서 확인에 대한 자세한 내용은 http://curl.haxx.se/docs/sslcerts.html 을 참조하세요 .

다음은 cURL 명령의 구문 예시입니다.

curl -i -X GET -u <username>:<password> -H <request-header>:<value> https://<subdomain>.<domain>.com:<port>/<resource-path>

1.5 플릿 패치 및 프로비저닝을 위한 인증[편집]

Fleet Patching 및 Provisioning REST API를 사용하려면 다음 단계를 수행하십시오.

1. REST 사용자 등록
CRS 사용자와 연관된 REST 사용자를 등록하려면 다음 명령을 실행하십시오.
rhpctl register user -user <restUserName> -restuser -email <useremail> -rhpuser <crsUser>
이전 명령에 대한 응답으로 비밀번호를 묻는 메시지가 표시됩니다.

"CRS 사용자는 Fleet 패치 및 프로비저닝을 설정하는 데 사용한 사용자이거나 유사한 역할 및 권한을 가진 사용자입니다."

어디에:
  • 옵션은 <restUserName> Fleet Patching and Provisioning Server로 전송된 각 REST 요청을 인증하는 데 사용되는 이름입니다.
  • 옵션 은 <useremail> 활성화된 경우 알림이 전송될 이메일 주소입니다.
  • 옵션은 <crsUser> 플릿 패치 및 프로비저닝 작업을 수행하기 위한 유사한 역할 및 권한을 가진 사용자의 이름입니다.
예시:
restCRS 사용자와 연결된 이메일 ID로 호출된 REST 사용자를 등록하려면 rest@email.comFleet Patching and Provisioning 서버에 CRS 사용자로 로그인하고 다음 명령을 실행합니다.
$ $ORACLE_HOME/bin/rhpctl register user -user rest -restuser -email rest@email.com -rhpuser $USER
2. Fleet 패치 및 프로비저닝 서버에서 HTTPS를 활성화합니다. :
Fleet Patching and Provisioning REST API의 경우 인증서는 Fleet Patching and Provisioning 서버에서 직접 가져옵니다. HTTPS는 Fleet 패치 및 프로비저닝 서버에서 기본적으로 활성화됩니다.
Fleet 패치 및 프로비저닝 서버에서 HTTPS가 활성화되지 않은 경우 Fleet 패치 및 프로비저닝 서버에 로그온하고 다음 단계를 수행하십시오.
a. Fleet 패치 및 프로비저닝 서버를 중지합니다.
$ $ORACLE_HOME/bin/srvctl stop rhpserver
b. Fleet 패치 및 프로비저닝 서버에서 HTTPS를 활성화합니다.
$ $ORACLE_HOME/bin/srvctl modify rhpserver -enableHTTPS YES
c. Fleet 패치 및 프로비저닝 서버를 시작합니다.
$ $ORACLE_HOME/bin/srvctl start rhpserver
3.HTTPS가 활성화된 경우 Fleet Patching 및 Provisioning REST API 인증서를 내보냅니다.
비슷한 역할이나 권한을 가진 사용자 로 Fleet Patching and Provisioning 서버에 로그온한 경우 이 작업을 수행할 수 있습니다 CRS User.
a.사용자에게 인증서를 내보낼 수 있는 쓰기 권한이 있는 경로로 디렉터리를 변경합니다.
$ cd ~
b. 다음 명령을 실행하십시오.
$ $ORACLE_HOME/bin/crskeytoolctl -printrootcert
클러스터 루트 공용 인증서가 다음 파일에 인쇄됩니다 <ClusterGUID.pem>.

"인증서는 Fleet Patching and Provisioning 서버가 시작될 때마다 생성됩니다. 모든 클라이언트는 Fleet Patching and Provisioning 서버가 시작될 때마다 인증서를 업데이트해야 합니다."

4.Fleet Patching 및 Provisioning REST API의 작동을 확인합니다.
Fleet Patching and Provisioning REST API의 작동을 확인하려면 모든 REST 요청에 사용될 Fleet Patching and Provisioning 서버 호스트 이름과 등록된 사용자의 사용자 및 비밀번호가 필요합니다( 2단계 에서 설명 ).
a.다음 명령을 사용하여 내보낸 인증서의 CURL_CA_BUNDLE절대 경로로 환경 변수를 설정합니다 .pem
$ export CURL_CA_BUNDLE=/home/crsUser/<clusterGUID>.pem

"환경 변수를 제거하려면 다음 명령을 실행하십시오. $ unset CURL_CA_BUNDLE"

b.Fleet Patching and Provisioning 서버가 실행 중인 노드의 이름을 찾으려면 다음 명령을 실행하십시오.
$ $ORACLE_HOME/bin/srvctl status rhpserver
이에 대한 응답으로 노드 이름과 Fleet Patching and Provisioning 서버의 상태를 받게 됩니다.
c.다음 cURL 명령을 사용하여 작업 복사본을 쿼리합니다. 그러면 사용자 비밀번호를 묻는 메시지가 표시됩니다.
curl -u <restUser> http://<RHPServerHostName>:8894/rhp-restapi/rhp/workingcopies
예:
작업 복사본의 이름을 얻으려면 Fleet Patching and Provisioning 서버에 로그온하고 다음 명령을 실행하십시오.
$ curl -u rest https://$HOSTNAME:8894/rhp-restapi/rhp/workingcopies
비밀번호를 묻는 메시지가 표시됩니다.
Enter host password for user "rest":
비밀번호를 입력하면 이에 대한 응답으로 Fleet Patching and Provisioning 서버에서 사용 가능한 작업 복사본의 이름이 표시됩니다. 작업 복사본이 없으면 응답으로 빈 항목 배열을 얻습니다.
{"items":[ ]}.

1.6 cURL 사용법[편집]

  • cURL은 URL 구문으로 데이터를 전송하기 위한 오픈 소스 명령줄 도구로, HTTP 및 HTTPS를 포함한 다양한 프로토콜을 지원합니다.
  • 이 문서의 예제에서는 cURL을 사용하여 데이터베이스 REST API에 액세스하는 방법을 보여줍니다.
  • cURL을 사용하여 REST API에 액세스하려면 다음 안내를 따르세요.
  • 빠른 시작에 설명된 대로 cURL을 설치합니다 .
  • 명령 창에서 cURL 환경 변수를 CURL_CA_BUNDLE로컬 CA 인증서 번들의 위치로 설정합니다. cURL을 사용한 CA 인증서 확인에 대한 자세한 내용은 http://curl.haxx.se/docs/sslcerts.html 을 참조하세요 .
  • cURL을 호출하고 필요에 따라 다음 표에 정의된 명령줄 옵션 중 하나 이상을 지정하여 실행을 지시합니다.
cURL 옵션 설명
-d, --data @file.json 로컬 시스템에서 요청 문서를 JSON 형식으로 식별합니다.
-F, --form @file.json 로컬 시스템에서 JSON 형식의 양식 데이터를 식별합니다.
-H 다음 중 하나 또는 둘 다를 정의합니다.* 요청 문서의 콘텐츠 유형 * X-ID-TENANT-NAMEID 도메인을 식별하기 위한 사용자 정의 헤더
-i 응답 헤더 정보를 표시합니다.
-u, --user username:password <ProductName> 계정의 사용자 이름과 암호를 지정합니다.
-X 요청 유형(예: GET, POST 등)을 나타냅니다.
  • 다음은 cURL 명령의 구문 예시입니다.
crul -i -X ​​GET -u <사용자 이름>:<비밀번호> -H <요청 헤더>:<값> https://<하위 도메인>.<도메인>.com/<경로>/<리소스 경로>