Mike Fechner
343 posts
Registered:
14 Sep 2016
Answered
09 Jun 2021
in reply to
Roger Blanchard
Link to this post
RESTful is a single table interface.
So when you want to address multiple tables in the same Business Entity via RESTful you need to add annotations for multiple endpoints. The can be done in a single Business Entity.
@RestAddress (type="collection", address="/Orders", tables="eOrder", id="OrderNum",
fields="OrderNum,CustNum,OrderDate,ShipDate,OrderStatus", canCreate="true").
@RestAddress (type="record", address="/Orders/~{OrderNum}", tables="eOrder,eCustomer,eOrderLine,eItem", id="OrderNum",
fields="eOrder.*,eCustomer.Name,eCustomer.City,eCustomer.Country,eOrderLine.*,eItem.ItemName,eItem.Price", canRead="true", canUpdate="true", canCreate="true", canDelete="true",
childAddresses="eCustomer:/Customers/~{CustNum},eOrderLine:/Orders/~{OrderNum}/OrderLines/~{LineNum},eItem:/Items/~{ItemNum}",
links="orderlines:/Orders/~{OrderNum}/OrderLines").
@RestAddress (type="collection", address="/Orders/~{OrderNum}/OrderLines", tables="eOrderLine", id="LineNum",
fields="ItemNum,Qty,Price", canDelete="true", canCreate="true") .
@RestAddress (type="record", address="/Orders/~{OrderNum}/OrderLines/~{LineNum}", tables="eOrderLine,eItem", id="LineNum",
fields="*", canRead="true", canUpdate="true", canDelete="true",
childAddresses="eItem:/Items/~{ItemNum}").
@RestAddress (type="collection", address="/Customers/~{CustNum}/Orders", tables="eOrder", id="OrderNum",
fields="OrderDate,ShipDate,OrderStatus", canCreate="true").
@RestAddress (type="collection", address="/Customers/~{CustNum}/Orders/~{OrderNum}/OrderLines", tables="eOrderLine", id="LineNum",
fields="ItemNum,Qty,Price", canDelete="true", canCreate="true") .
@RestAddress (type="record", address="/Customers/~{CustNum}/Orders/~{OrderNum}", tables="eOrder", id="OrderNum",
fields="eOrder.*", canRead="true", canUpdate="true", canCreate="true", canDelete="true",
links="orderlines:/Customers/~{CustNum}/Orders/~{OrderNum}/OrderLines").
@RestAddress (type="record", address="/Customers/~{CustNum}/Orders/~{OrderNum}/OrderLines/~{LineNum}", tables="eOrderLine,eItem", id="LineNum",
fields="*", canRead="true", canUpdate="true", canDelete="true").