Esempi di mapping di un servizio Web esistente in OData tramite CSDL

Importante

In questo momento non stiamo più caricando nuovi editori di servizi dati. I nuovi servizi dati non saranno approvati per l'elencazione. Se si dispone di un'applicazione aziendale SaaS che si vuole pubblicare in AppSource, è possibile trovare altre informazioni qui. Se si dispone di un'applicazione IaaS o di un servizio per gli sviluppatori che si vuole pubblicare in Azure Marketplace, è possibile trovare altre informazioni qui.

Esempio: FunctionImport per i dati "Raw" restituiti utilizzando "POST"

Utilizzare dati Raw POST per creare un nuovo subordinato e restituire il relativo URL definito dal server (percorso) o per aggiornare una parte del subordinato nell’URL definito dal server. Dove il subordinato è una struttura, ad esempio non strutturata, come un file di testo. Prestare attenzione che POST non è idempotente senza un percorso.

    <!--  No EntitySet or EntityType nodes required for Raw output-->
    <FunctionImport Name="AddUsageEvent" ReturnType="Raw(text/plain)" d:EncodeParameterValues="true" d:AllowedHttpMethods="POST" d:BaseUri="http://services.organization.net/MyServicePath?name={name}&amp;AccountKey=22AC643">
    <d:Title d:Map="" />
    <d:Rights d:Map="" />
    <d:Description>Add usage event (data acquisition)</d:Description>
    <d:Headers>
    <d:Header d:Name="Content-Type" d:Value="application/xml;charset=UTF-8" />
    </d:Headers>
    <Parameter Name="name" Nullable="false" Mode="In" Type="String" d:Description="first name" d:SampleValues="John|Joe|Bill"  d:EncodeParameterValue="true" />
    <d:Namespaces>
    <d:Namespace d:Prefix="p" d:Uri="http://schemas.organization.net/2010/04/myNamespace " />
    <d:Namespace d:Prefix="p2" d:Uri=" http://schemas.organization.net/2010/04/myNamespace2 " />
    </d:Namespaces>
    </FunctionImport>

Esempio: FunctionImport utilizzando "DELETE"

Utilizzare DELETE per rimuovere un URI specificato.

    <EntitySet Name="DeleteUsageFileEntitySet" EntityType="MyOffer.DeleteUsageFileEntity" />
    <FunctionImport Name="DeleteUsageFile" EntitySet="DeleteUsageFileEntitySet" ReturnType="Collection(MyOffer.DeleteUsageFileEntity)"  d:AllowedHttpMethods="DELETE" d:EncodeParameterValues="true” d:BaseUri=”http://services.organization.net/MyServicePath?name={name}&amp;AccountKey=22AC643" >
    <d:Title d:Map="" />
    <d:Rights d:Map="" />
    <d:Description>Delete usage File</d:Description>
    <d:Headers>
    <d:Header d:Name="Content-Type" d:Value="application/xml;charset=UTF-8" />
    </d:Headers>
    <Parameter Name="name" Nullable="false" Mode="In" Type="String" d:Description="first name" d:SampleValues="John|Joe|Bill"  d:EncodeParameterValue="true" />
    <d:Namespaces>
    <d:Namespace d:Prefix="p" d:Uri="http://schemas.organization.net/2010/04/myNamespace " />
    <d:Namespace d:Prefix="p2" d:Uri=" http://schemas.organization.net/2010/04/myNamespace2 " />
    </d:Namespaces>
    </FunctionImport>
    <EntityType Name="DeleteUsageFileEntity" d:Map="//boolean">
    <Property Name="boolean" Type="String" Nullable="true" d:Map="./boolean" />
    </EntityType>

Esempio: FunctionImport utilizzando "POST"

Utilizzare dati Raw POST per creare un nuovo subordinato e restituire il relativo URL definito dal server (percorso) o per aggiornare una parte del subordinato nell’URL definito dal server. In cui la subordinata è una struttura. Prestare attenzione che POST non è idempotente senza un percorso.

    <EntitySet Name="CreateANewModelEntitySet2" EntityType=" MyOffer.CreateANewModelEntity2" />
    <FunctionImport Name="CreateModel" EntitySet="CreateANewModelEntitySet2" ReturnType="Collection(MyOffer.CreateANewModelEntity2)" d:EncodeParameterValues="true" d:AllowedHttpMethods="POST" d:BaseUri=”http://services.organization.net/MyServicePath?name={name}&amp;AccountKey=22AC643">
    <d:Title d:Map="" />
    <d:Rights d:Map="" />
    <d:Description>Create A New Model</d:Description>
    <d:Headers>
    <d:Header d:Name="Content-Type" d:Value="application/xml;charset=UTF-8" />
    </d:Headers>
    <Parameter name="name" Nullable="false" Mode="In" Type="String" d:Description="first name" d:SampleValues="John|Joe|Bill"  d:EncodeParameterValue="true" />
    <d:Namespaces>
    <d:Namespace d:Prefix="p" d:Uri="http://schemas.organization.net/2010/04/myNamespace " />
    <d:Namespace d:Prefix="p2" d:Uri=" http://schemas.organization.net/2010/04/myNamespace2 " />
    </d:Namespaces>
    </FunctionImport>

Esempio: FunctionImport mediante "PUT"

Utilizzare PUT per creare un nuovo subordinato o per aggiornare l'intero subordinato in un URL definito dal server. Dove il subordinato è una struttura, PUT è idempotente, quindi più occorrenze comportano lo stesso stato, ovvero x=5. PUT deve essere utilizzato con il contenuto completo della risorsa specificata.

    <EntitySet Name="UpdateAnExistingModelEntitySet" EntityType="MyOffer.UpdateAnExistingModelEntity" />
    <FunctionImport Name="UpdateModel" EntitySet="UpdateAnExistingModelEntitySet" ReturnType="Collection(MyOffer.UpdateAnExistingModelEntity)" d:EncodeParameterValues="true" d:AllowedHttpMethods="PUT" d:BaseUri=”http://services.organization.net/MyServicePath?name={name}&amp;AccountKey=22AC643">
    <d:Title d:Map="" />
    <d:Rights d:Map="" />
    <d:Description>Update an Existing Model</d:Description>
    <d:Headers>
    <d:Header d:Name="Content-Type" d:Value="application/xml;charset=UTF-8" />
    </d:Headers>
    <Parameter Name="name" Nullable="false" Mode="In" Type="String" d:Description="first name" d:SampleValues="John|Joe|Bill"  d:EncodeParameterValue="true" />
    <d:Namespaces>
    <d:Namespace d:Prefix="p" d:Uri="http://schemas.organization.net/2010/04/myNamespace " />
    <d:Namespace d:Prefix="p2" d:Uri=" http://schemas.organization.net/2010/04/myNamespace2 " />
    </d:Namespaces>
    </FunctionImport>
    <EntityType Name="UpdateAnExistingModelEntity" d:Map="//string">
    <Property Name="string"     Type="String" Nullable="true" d:Map="./string" />
    </EntityType>

Esempio: FunctionImport per i dati "Raw" restituiti utilizzando "PUT"

Utilizzare dati Raw PUT per creare un nuovo subordinato o per aggiornare l'intero subordinato in un URL definito dal server. Dove il subordinato è una struttura, ad esempio non strutturata, come un file di testo. PUT è idempotente, quindi più occorrenze comportano lo stesso stato, ovvero x=5. PUT deve essere utilizzato con il contenuto completo della risorsa specificata.

    <!--  No EntitySet or EntityType nodes required for Raw output-->
    <FunctionImport Name="CancelBuild” ReturnType="Raw(text/plain)" d:AllowedHttpMethods="PUT" d:EncodeParameterValues="true" d:BaseUri=” http://services.organization.net/MyServicePath?name={name}&amp;AccountKey=22AC643">
    <d:Title d:Map="" />
    <d:Rights d:Map="" />
    <d:Description>Cancel Build</d:Description>
    <d:Headers>
    <d:Header d:Name="Content-Type" d:Value="application/xml;charset=UTF-8" />
    </d:Headers>
    <Parameter Name="name" Nullable="false" Mode="In" Type="String" d:Description="first name" d:SampleValues="John|Joe|Bill"  d:EncodeParameterValue="true" />
    <d:Namespaces>
    <d:Namespace d:Prefix="p" d:Uri="http://schemas.organization.net/2010/04/myNamespace " />
    <d:Namespace d:Prefix="p2" d:Uri=" http://schemas.organization.net/2010/04/myNamespace2 " />
    </d:Namespaces>
    </FunctionImport>

Esempio: FunctionImport per i dati "Raw" restituiti utilizzando "GET"

Utilizzare dati Raw GET per restituire un subordinato non strutturato, ad esempio testo.

    <!--  No EntitySet or EntityType nodes required for Raw output-->
    <FunctionImport Name="GetModelUsageFile" ReturnType="Raw(text/plain)" d:EncodeParameterValues="true" d:AllowedHttpMethods="GET" d:BaseUri="https://cmla.cloudapp.net/api2/model/builder/build?buildId={buildId}&amp;apiVersion={apiVersion}">
    <d:Title d:Map="" />
    <d:Rights d:Map="" />
    <d:Description>Download A Models Usage File</d:Description>
    <d:Headers>
    <d:Header d:Name="Accept" d:Value="application/xml,application/xhtml+xml,text/html;" />
    <d:Header d:Name="Content-Type" d:Value="application/xml;charset=UTF-8" />
    </d:Headers>
    <Parameter Name="name" Nullable="false" Mode="In" Type="String" d:Description="first name" d:SampleValues="John|Joe|Bill"  d:EncodeParameterValue="true" />
    <d:Namespaces>
    <d:Namespace d:Prefix="p" d:Uri="http://schemas.organization.net/2010/04/myNamespace " />
    <d:Namespace d:Prefix="p2" d:Uri=" http://schemas.organization.net/2010/04/myNamespace2 " />
    </d:Namespaces>
    </FunctionImport>

Esempio: FunctionImport per "Paging" tramite dati restituiti

Utilizzare il paging RESTful implementato tramite i dati con GET. Il paging predefinito è impostato su 100 righe per ogni pagina di dati.

    <EntitySet Name=”CropEntitySet" EntityType="MyOffer.CropEntity" />
    <FunctionImport    Name="GetCropReport" EntitySet="CropEntitySet” ReturnType="Collection(MyOffer.CropEntity)" d:EmitSelfLink="false" d:EncodeParameterValues="true" d:Paging="SkipTake" d:MaxPageSize="100" d:BaseUri="http://api.mydata.org/Crop? report={report}&amp;series={series}&amp;start={$skip}&amp;size=100">
    <Parameter Name="report" Type="Int32" Mode="In" Nullable="false" d:SampleValues="4"  d:enum="1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19"  />
    <Parameter Name="series"    Type="String"    Mode="In" Nullable="false" d:SampleValues="FARM" />
    <d:Headers>
    <d:Header d:Name="Content-Type" d:Value="text/xml;charset=UTF-8" />
    </d:Headers>
    <d:Namespaces>
    <d:Namespace d:Prefix="diffgr" d:Uri="urn:schemas-microsoft-com:xml-diffgram-v1" />
    </d:Namespaces>
    </FunctionImport>

Vedere anche