Oracle Functions에서 APEX의 Restful Service와 협력
7451 단어 serverless오라클oraclecloudApexoci
Oracle Functions에서 ORDS의 RESTful 서비스에 정의된 Rest Endpoint와 연동할 수 있습니다.
그래서 자작한 Oracle Application Express(APEX) 앱의 Restful Service와 연계, 거기에서 또 다른 툴과 연계하는 것도 가능하다는 것입니다.
이번 Oracle Functions에서 APEX의 Restful Data를 조작해 보겠습니다.
전제
· ATP (Autonomous Transaction Processing) 프로비저닝
⇒arakiatptest라는 DB명으로 하고 있습니다.
· ATP에서 Oracle APEX를 설정하고 자신의 작업 공간을 만들었습니다.
⇒testworkspace라는 작업 공간명으로 하고 있습니다.
・Oracle Functions 개발, 실행 환경이 구축되고 있는 것.
⇒ · Oracle Functions 설정
※이쪽의 순서로 작성한 ATP는 검증 후, 삭제합니다.
APEX Restful Service 설정
APEX 로그인 후 SQL 워크샵> RESTful 서비스에서
Register Schema to ORDS를 클릭합니다(새 작업공간의 경우 스키마를 ORDS에 등록해야 함).
스키마 속성 저장
Schema Alias에 임의의 스키마 이름을 넣고 "Save Schema Attributes"를 클릭 (여기서는 testworkspace라는 이름).
ORDS RESTful 서비스 페이지가 표시됩니다.
Oracle APEX에 사전 설치된 샘플 서비스 "oracle.example.hr"
는 직원 정보 리소스를 제공하고 엔터티는 json 파일로 저장됩니다.
이것을 엔드포인트를 이용하여 Oracle Funcitons와 연계하고 조작하기로 합니다.
실제 내용을 살펴 보겠습니다.
예를 들면 샘플내 "employees"라고 하는 템플릿 정보의 "GET"핸들러에는,
기재된 Full URL(REST 엔드포인트)에서 GET를 실행했을 때의 PL/SQL이 기재되어 있습니다.
여기에서는 모든 직원 정보를 취득하기 위한 FULL URL(REST 엔드포인트)은 다음과 같습니다.
htps // v는 wxpz0 아 kgqjtj 아라키아 tp st. 오 db. 우-sp x-1. 오라 cぇ cぉ 우다 ps. 코 m / 오 rds / 테 s와 rks 파세 / hr / 에 mp ぉ 이에 s /
이것을 나누고 자세히 설명하면,
인스턴스별 부분 ⇒ vhawxpz0akgqjtj-arakiatptest.adb.us-phoenix-1.oraclecloudapps.com
APEX 작업 공간 이름 ⇒ testworkspace
나머지 경로 매개변수 ⇒ hr/employees/
Oracle Functions 실행
필요한 리소스 준비
이번에는 다음을 사용합니다.
htps : // 기주 b. 코 m / 아 b 히로 ck · f 음 - tp - rds - mp ぇ
기능 개발 환경에서 소스 복제
git clone https://github.com/abhirockzz/fn-atp-ords-sample
cd fn-atp-ords-sample
엔드포인트 설정
vi app.yaml
※以下編集。ORDS_REST_SERVICE_ENDPOINTに先ほどFull URL属性に記載されていた部分を記載します。
[変更前]
name: fn-atp-ords
config:
ORDS_REST_SERVICE_ENDPOINT: <TO_BE_FILLED><img width="462" alt="キャプチャ1.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131627/7a5683c3-2b95-64b5-f076-19a083bb0743.png">
[変更後]
※エンドポイントのURLは/hr/まででOKです。
name: fn-atp-ords
config:
ORDS_REST_SERVICE_ENDPOINT: https://vhawxpz0akgqjtj-arakiatptest.adb.us-phoenix-1.oraclecloudapps.com/ords/testworkspace/hr/
OCI 콘솔에서 Phoenix 지역, Oracle Functions 화면으로 전환합니다.
htps : // 이런. 우-sp x-1. 오 c c c d d. 코 m / 훙 c 치온 s
Create Application에서
NAME: fn-atp-ords
VCN: Fn용으로 만든 VCN
SUBNETS: PHX-AD-1에서 3까지 선택
위에서 "create"를 누릅니다.
기능 배포
fn list apps
※作成したファンクションが表示されます
NAME ID
fn-atp-ords ocid1.fnapp.oc1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
デプロイ(全ての起動をデプロイするコマンド)
fn -v deploy --all
Rest Data 작업
全従業員を表示(jqで整えてます)
fn invoke fn-atp-ords read-emps | jq
{
"items": [
{
"uri": {
"$ref": "https://vhawxpz0akgqjtj-arakiatptest.adb.us-phoenix-1.oraclecloudapps.com/ords/testworkspace/hr/employees/7369"
},
"rn": 1,
"empno": 7369,
"ename": "SMITH",
"job": "CLERK",
"hiredate": "1980-12-17T00:00:00Z",
"mgr": 7902,
"sal": 800,
"comm": null,
"deptno": 20
}
…(以下省略)
IDで該当する従業員を取得
echo -n '7654' | fn invoke fn-atp-ords read-emps | jq
{
"empno": 7654,
"ename": "MARTIN",
"job": "SALESMAN",
"mgr": 7698,
"hiredate": "1981-09-28T00:00:00Z",
"sal": 1500,
"comm": 1400,
"deptno": 30
}
Employeeのレコードを更新(7654)
echo -n '{"empno":7654,"ename":"ARAKI","job":"ENGINEER","mgr":7698,"hiredate":"1981-09-28T00:00:00Z","sal":1500,"comm":1400,"deptno":30}' | fn invoke fn-atp-ords update-emps
更新確認
echo -n '7654' | fn invoke fn-atp-ords read-emps | jq
{
"empno": 7654,
"ename": "ARAKI",
"job": "ENGINEER",
"mgr": 7698,
"hiredate": "1981-09-28T00:00:00Z",
"sal": 1500,
"comm": 1400,
"deptno": 30
}
Oracle Functions에서 ORDS의 REST Endpoint를 이용해 Oracle 툴과 연계하면, 꽤 다양한 사용법을 할 수 있다고 생각했습니다.
관련 기사
· Oracle Functions에 대한 메모
· Oracle Functions 설정
· Oracle Functions에서 TensorFlow로 이미지 분류
· Oracle Functions에서 Email Delivery와 협력하여 메일 전송
· Oracle Functions에서 Object Storage 작업 (텍스트 저장, 검색 + 텍스트를 PDF로 변환)
· Fn Project - Fn Server 구축 (Oracle Linux 7.6)
· Oracle Functions에서 OCI Go SDK를 사용한 인스턴스 작업
Reference
이 문제에 관하여(Oracle Functions에서 APEX의 Restful Service와 협력), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/y-araki-qiita/items/03e67f5bca570c526a7c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)