Hey there, fellow developer! Ready to dive into the world of Oracle Fusion API integration? You're in for a treat. We're going to walk through building a robust integration using Python, and I promise it'll be smoother than you might think. Let's get cracking!
Before we jump in, make sure you've got these basics covered:
requests
, json
(install with pip install requests
)First things first, let's get you authenticated:
import requests import json def get_access_token(username, password, base_url): auth_endpoint = f"{base_url}/fscmRestApi/tokenrelay" response = requests.post(auth_endpoint, auth=(username, password)) return response.json()['access_token'] access_token = get_access_token('your_username', 'your_password', 'https://your-instance.oracle.com')
Pro tip: In a real-world scenario, you'd want to handle token expiration and refreshing. But let's keep it simple for now.
Now that we're authenticated, let's make some requests:
def make_api_request(endpoint, method='GET', data=None): headers = { 'Authorization': f'Bearer {access_token}', 'Content-Type': 'application/json' } url = f"{base_url}/fscmRestApi/resources/{endpoint}" response = requests.request(method, url, headers=headers, json=data) response.raise_for_status() return response.json() # Example: Get employee data employees = make_api_request('emps')
Let's add some error handling to make our lives easier:
import logging logging.basicConfig(level=logging.INFO) def safe_api_request(endpoint, method='GET', data=None): try: return make_api_request(endpoint, method, data) except requests.exceptions.RequestException as e: logging.error(f"API request failed: {e}") return None
Time to do something with that data:
def process_employee_data(employees): return [{'name': emp['name'], 'id': emp['id']} for emp in employees] processed_employees = process_employee_data(employees)
Let's wrap common operations in reusable functions:
class OracleFusionAPI: def __init__(self, username, password, base_url): self.base_url = base_url self.access_token = get_access_token(username, password, base_url) def get_employees(self): return self.safe_api_request('emps') def update_employee(self, emp_id, data): return self.safe_api_request(f'emps/{emp_id}', method='PUT', data=data) # Add more methods as needed api = OracleFusionAPI('username', 'password', 'https://your-instance.oracle.com') employees = api.get_employees()
Let's put our API to work:
# Get all employees all_employees = api.get_employees() # Update an employee's details api.update_employee('EMP123', {'jobTitle': 'Senior Developer'}) # Create a new financial record (assuming we have a create_financial_record method) api.create_financial_record({'amount': 1000, 'description': 'New equipment'})
Remember these golden rules:
time.sleep()
if needed)Don't forget to test your integration:
import unittest from unittest.mock import patch class TestOracleFusionAPI(unittest.TestCase): @patch('requests.request') def test_get_employees(self, mock_request): mock_request.return_value.json.return_value = [{'name': 'John', 'id': '123'}] api = OracleFusionAPI('username', 'password', 'https://test-instance.oracle.com') employees = api.get_employees() self.assertEqual(len(employees), 1) self.assertEqual(employees[0]['name'], 'John') if __name__ == '__main__': unittest.main()
And there you have it! You've just built a solid Oracle Fusion API integration in Python. Remember, this is just the beginning. There's always room to expand and improve your integration. Keep exploring the API documentation, and don't be afraid to push the boundaries of what you can do.
Happy coding, and may your integrations always run smoothly!