In oData 4.0 Aktionen und Funktionen werden häufig bezeichnet. Ich konnte nicht verstehen, was sie sind und wie unterschiedlich sie sind. Sind funktionsgleiche Funktionen in irgendeiner Programmiersprache oder etwas anderes? Was sind Aktionen? und wie beide verschieden sind. Danke für Ihre Hilfe.oData v4 Was sind Funktionen und Aktionen in einfachen Worten?
Antwort
Aus der Spezifikation in OData.org sind sie Operationen, und der Unterschied ist Nebeneffekt oder nicht.
In WebAPI/OData-Implementierung Sie die Dokumentation hier beziehen:
http://odata.github.io/WebApi/#04-06-function-parameter-support
http://odata.github.io/WebApi/#04-07-action-parameter-support
können Sie sehen, die Unterschrift ist offensichtlich:
Aktion:
[HttpPost]
public IHttpActionResult PrimitiveAction(ODataActionParameters parameters)
Funktion n:
[HttpGet]
public string ComplexFunction([FromODataUri]Address c1, [FromODataUri]IEnumerable<Address> c2)
Kurze Erklärung vom Spec kopiert:
Actions sind Operationen, die von einem OData-Dienst ausgesetzt, die Nebenwirkungen haben können, wenn sie aufgerufen. Aktionen KÖNNEN Daten zurückgeben, DARF NICHT weiter mit zusätzlichen Pfadsegmenten zusammengesetzt werden.
Functions sind Vorgänge, die von einem OData-Dienst offengelegt werden, der Daten zurückgeben muss und KEINE beobachtbaren Nebenwirkungen haben darf.
Pfad Segment
Jeder separate Teil des OData URL ist ein Pfadsegment. Der URI /Products(1)/Supplier
hat drei Pfadsegmente.
- Entity Set -
Products
- Key -
1
- Navigation -
Supplier
Was bedeutet "Muss nicht weiter mit zusätzlichen Pfad Segmenten komponiert werden" – user576510
bearbeitet meine awnser –
Und was sind "Nebenwirkungen"? Beispiele wären nett. –
Aktionen - Kann verwendet werden, CRUD-Operationen auf eine Entität auszuführen. Das heißt, Sie können die Entität mit benutzerdefinierten Aktionen erstellen, aktualisieren oder löschen, wenn Standardaktionen (POST/PUT/DELETE) Ihre Anforderungen nicht unterstützen. Sie können auch die benutzerdefinierten Aktionen verwenden, um die Daten von mehreren Entitäten für komplexe Typen abzurufen. Aktionen ähneln gespeicherten Prozeduren in SQL, die sowohl SELECT- als auch DML-Abfragen ermöglichen.
Funktionen - Im Idealfall sollten Sie Funktionen verwenden, um nur Daten zu erhalten und nicht für Datenänderungen. Diese sind Funktionen in SQL ähnlich, die nur SELECT-Abfragen erlauben.
Nebenwirkung oder nicht? Können Sie bitte erklären, was Nebenwirkung ist oder nicht? – user576510