我是OData的新手,我正在与Postman做一些实验来学习它。
在本地,在Tomcat服务器上,我有一个具有以下相同结构的OData服务:
https://services.odata.org/OData/OData.svc/?$format=json
与产品和供应商。
我天真/愚蠢的问题是:如何为特定供应商创建新产品实体?
使用Postman(API开发环境),我尝试了一些简单的GET请求,例如:
产品列表:https://services.odata.org/OData/OData.svc/Products?$format=json
供应商列表:https://services.odata.org/OData/OData.svc/Suppliers?$format=json
供应商1:https://services.odata.org/OData/OData.svc/Suppliers(1)/Products?$format=json
的产品清单供应商(1)的产品为“面包,DVD播放器,LCD HDTV”。
现在...通过Postman,我尝试使用POST请求创建一个新的产品实体,如下所示:
POST http://localhost:8080/odata/DemoService.svc/Products 身体是:
{
"@odata.context": "$metadata#Products/$entity",
"ID": 11,
"Name": "Honey",
"Description": "Chestnut Honey",
"ReleasedDate": "2019-07-29",
"DiscountinuedDate": "2022-07-29",
"Rating": 5,
"Price": 3
}
但这会创建没有供应商关联的实体“蜂蜜”。
那么... 如何创建与供应商(1)相关联的实体“蜂蜜”?
我需要在正文中指定诸如“ odata.id”,“ @ odata.context”,“ @ odata.type”之类的内容吗?
如果有帮助,这是元数据文档:
<edmx:Edmx Version="4.0">
<edmx:DataServices>
<Schema Namespace="com.example.ODataDemo">
<EntityType Name="Product">
<Key>
<PropertyRef Name="ID"/>
</Key>
<Property Name="ID" Type="Edm.Int32"/>
<Property Name="Name" Type="Edm.String"/>
<Property Name="Description" Type="Edm.String"/>
<Property Name="ReleasedDate" Type="Edm.Date"/>
<Property Name="DiscountinuedDate" Type="Edm.Date"/>
<Property Name="Rating" Type="Edm.Int32"/>
<Property Name="Price" Type="Edm.Decimal"/>
<NavigationProperty Name="Supplier" Type="com.example.ODataDemo.Supplier" Partner="Products"/>
</EntityType>
<EntityType Name="Supplier">
<Key>
<PropertyRef Name="ID"/>
</Key>
<Property Name="ID" Type="Edm.Int32"/>
<Property Name="Name" Type="Edm.String"/>
<Property Name="Address" Type="com.example.ODataDemo.Address"/>
<NavigationProperty Name="Products" Type="Collection(com.example.ODataDemo.Product)" Partner="Supplier"/>
</EntityType>
<ComplexType Name="Address">
<Property Name="Street" Type="Edm.String"/>
<Property Name="City" Type="Edm.String"/>
<Property Name="State" Type="Edm.String"/>
<Property Name="ZipCode" Type="Edm.String"/>
<Property Name="Country" Type="Edm.String"/>
</ComplexType>
<EntityContainer Name="DemoService">
<EntitySet Name="Products" EntityType="com.example.ODataDemo.Product">
<NavigationPropertyBinding Path="Supplier" Target="Suppliers"/>
</EntitySet>
<EntitySet Name="Suppliers" EntityType="com.example.ODataDemo.Supplier">
<NavigationPropertyBinding Path="Products" Target="Products"/>
</EntitySet>
</EntityContainer>
</Schema>
</edmx:DataServices>
</edmx:Edmx>
提前谢谢!