OData服务-使用POST请求创建新实体

时间:2019-08-18 20:35:09

标签: json http-post odata postman

我是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>

提前谢谢!

0 个答案:

没有答案