Nếu tôi có hai dịch vụ, 'Người dùng' và 'Sản phẩm', mỗi dịch vụ có một số chức năng với điểm cuối được xác định cho mỗi (như bất kỳ API truyền thống nào), có thể cho chúng được tổ chức riêng biệt trong cơ sở mã (để rõ ràng) nhưng một khi được triển khai chia sẻ cùng một URL cơ sở API? Ví dụ, hãy xem xét tôi có cấu trúc sau:Serverless Framework - Hai dịch vụ dưới một điểm cuối APIGW
/src
-- /users
---- event.json
---- handler.js
---- serverless.yml
-- /products
---- event.json
---- handler.js
---- serverless.yml
và src/users/serverless.yml
tôi có định nghĩa sau đây:
functions:
create:
handler: handler.create
events:
- http: POST user
read:
handler: handler.read
events:
- http: GET user
và src/products/serverless.yml
tôi đã cơ bản được điều tương tự, chỉ cần hoán đổi 'sử dụng' cho 'sản phẩm' .
Hiện nay, cả những dịch vụ này sẽ được triển khai điểm cuối API để khác biệt rõ rệt, một với một URL https://fghijklmnop.execute-api...
và khác với một URL https://abcdevwxyz.execute-api....
Câu hỏi của tôi là, nó sẽ có thể để có những dịch vụ này được triển khai nhưng vẫn trong một API duy nhất có một URL duy nhất (vì vậy cả hai URL sẽ được phân phát dưới URL https://abcdevwxyz.execute-api....
)?
Tôi giả sử câu trả lời là 'Không, bởi vì Cloud Formation ...', nhưng tôi nghĩ tôi sẽ đăng câu hỏi ở đây chỉ vì mục đích thảo luận và giúp tôi hiểu về việc xây dựng ứng dụng không cần máy chủ.
Tôi biết sử dụng Miền tùy chỉnh, theo the answer here, nhưng đối với chu kỳ phát triển nhanh hơn, đây không thực sự là giải pháp lý tưởng. Giải pháp duy nhất của tôi cho đến nay sẽ đơn giản là tạo một dịch vụ gọi là 'api' chứa tất cả các điểm cuối API của tôi sẽ chỉ cần gọi các hàm Lambda của các dịch vụ khác trực tiếp thay vì thông qua các điểm cuối được cấu hình trước đó. Nó sẽ là một lớp trừu tượng, thực sự, nhưng thêm các lớp có khả năng không cần thiết vào ứng dụng của tôi. Một lần nữa, tò mò muốn xem những gì cộng đồng cảm thấy về điều này.
Điều này đúng, nhưng sau đó các dịch vụ này được kết hợp chặt chẽ và phải luôn được triển khai và quản lý cùng nhau. Nếu bạn muốn giữ các dịch vụ tách riêng biệt (nhưng được liên kết qua một lớp API) thì điều này không hoạt động. Tên dịch vụ phải giống nhau, ví dụ. –