Oracle REST
Published: 2024-01-22 15:51:14

> Biến Oracle database thành một dịch vụ Restful API là một trong những tiện ích được ORACLE cung cấp dưới tên gọi ORDS (Oracle REST data service), là một dịch vụ REST API nhưng bản thân ORDS sẽ không thể thay thế hoàn toàn một web api server thực sự ( giao tiếp giữa các dịch vụ, xử dụng cache…), tuy nhiên ORDS vẫn có một số lợi thế nhất định trong phát triển ứng dụng web mà chúng ta có thể xem xét. 

> Trên tư tưởng của API . Khi giải quyết các chủ đề kỹ thuật, thật dễ dàng để chỉ tập trung vào công nghệ. Nhưng sự phát triển ưu tiên API không chỉ là các tiêu chuẩn kỹ thuật. Đó là một cách làm việc và cộng tác. Thay vì chỉ quan tâm đến các chi tiết cụ thể của từng API, cách tiếp cận ưu tiên API thiên về việc xem xét các nhóm và hoạt động xung quanh các API đó của bạn. 

#I.Oracle REST data service là gì?
Oracle REST data service là một ứng dụng dạng mid-tier, ORDS sẽ cung cấp API theo tiêu chuẩn REST cho cơ sở dữ liệu Oracle. Với ORDS chúng ta có thể biến cơ sở dữ liệu Oracle thành dịch vụ API RESTful. Một mô hình triển khai thường sẽ như sau : 


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qviuychh9gft1b6mejrd.png)

1.	Trong hình ORDS sẽ đóng vai trò làm API web server để kết nối đến CSDL. ORDS chỉ chứa config và không giữ logic nghiệp vụ
2.	Logic nghiệp vụ lúc này sẽ chỉ nằm trên database.
3.	ORDS có thể kết nối đến nhiều CSDL.
4.	ORDS hỗ trợ authentication dựa trên OAuth2, một số tính năng được hỗ trợ :
     a.	HTTP Basic Authentication
     b.	API Key Authentication
     c.	OAuth Authentication and Authorization
     d.	Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) with Identity Domains Authentication
     e.	Oracle Identity Cloud Service (IDCS) Authentication

## 2 ORDS & API first & Database first
- Oracle REST data service là một công cụ ánh xạ trực tiếp giữa thiết kế database và API, linh hoạt cho nghiệp vụ doanh nghiệp. Bất kì thay đổi của cơ sở dữ liệu sẽ được cập nhật ngay cho dịch vụ API, điều này là một lợi thế rất lớn và nó đặc biệt hữu dụng trong trường hợp ứng dụng được phát triển dưới dạng chiến lược API (API First) song hành với Database First.
- Chiến lược ưu tiên API là lý tưởng cho kiến trúc vi dịch vụ vì chiến lược này đảm bảo hệ sinh thái ứng dụng bắt đầu dưới dạng hệ thống mô-đun và có thể tái sử dụng. Bằng cách nhấn mạnh các API từ sớm, cấu trúc của các yêu cầu và dữ liệu API được làm nổi bật. Điều này cho phép API cung cấp những gì nhà phát triển cần nhất và tránh dành thời gian của nhà phát triển cho các tính năng mà sau này hóa ra là không mong muốn. 

##2.1 Use case
	

> Mặc dù ORDS có thể phát triển ứng dụng REST API rất nhanh, nhưng bản thân nó cũng có một nhược điểm rất lớn. Hệ thống API bên ngoài có thể dễ dàng call API của ORDS nhưng không có chiều ngược lại, ORDS không được thiết kế để giao tiếp với server nào khác ngoài oracle database server

## 2.1.1 Vì vậy hãy dùng ORDS khi 
-	ORDS là tầng cung cấp dịch vụ dữ liệu ngoài cùng.
-	Là dịch vụ stateless và cô lập.
-	ORDS lý tưởng cho ứng dụng dạng database first. Đơn giản bởi vì khi thay thế nó bởi một hệ thống backend mạnh mẽ hơn, thì cũng không tốn chi phí cho việc test lại nghiệp vụ.
-	Có thể cân nhắc build-in tiến trình ORDS trong phát triển dịch vụ dạng low-code. 
-	Trong trường hợp cần tích hợp với nhiều dịch vụ API, vẫn có thể sử dụng ORDS để tạo API logic nghiệp vụ cho các bên tích hợp trước cho đến khi hệ thống backend server được hoàn thành ( không bị duplicate công việc bởi ORDS không chứa code logic ).

#3.Cách cấu hình ORDS 
Link : https://www.oracle.com/database/technologies/appdev/rest-data-services-downloads-2043.html

Bước 1 : Run file ords, cấu hình theo các step như ảnh dưới

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fx51p0ld2e73zc3run30.png)

Bước 2 : Enable Rest service trong Oracle Database

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wr4hngb6c8v0szrtnljd.png)

Bước 3: Tạo Rest module

3.1 Rest module trong Rest data service

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/slli5lnxxwtym66x2c15.png)

3.2 Tạo demo module và publish

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0matj7pnxhu2pc0dwvnl.png)

3.3 Tạo api trên module 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3m4huprbw41g6mlbsfoa.png)

3.4 Kết quả

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vfanf9qqb1udak6ycsgb.png)

3.4 Xử lý logic nghiệp vụ bằng cách tạo 1 handler cho api vừa tạo
- Chọn phương thức REST

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fuquzc94o6sepqt1vpkf.png)
3.5 Tạo logic và lưu kết quả 


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/koj3r4acul71q2jya64h.png)

4. Kết quả cuối cùng

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ejrzf0hvf43sfv5s569f.png)

#4 Tính năng mở rộng
Bên cạnh tính năng cấu hình làm REST service, ORDS cũng cung cấp giải pháp cho authentication, cache, HA … Chúng ta có thể xem hướng dẫn tại đây : 
https://www.oracle.com/database/technologies/appdev/rest/best-practices/