OData is niet alleen erg gevaarlijk, het is ook ontzettend misleidend. Het wekt de schijn van een REST API, zonder zich aan de geschreven en ongeschreven best practices rondom REST APIs te houden.
Ik vind OData persoonlijk een ontzettend lelijk gedrocht van een "standaard" waar je verre van moet blijven.
Nu even antwoord op de vraag van de TS: Of je veel of weinig business logic achter je API stopt, is geen wetmatigheid. Dat hangt van de situatie af. Soms wil je dat je API enkel een interface is die min of meer enkel CRUD operaties op je database "exposed", maar soms wil je dat er binnen je API veel meer gebeurt met de data, voordat die data gepresenteerd wordt. Overigens hangt het ook een beetje af van het type API dat je bouwt. Je hebt het over een "web API", en anders dan dat je daarmee doelt op een interface die benaderbaar is over het web, weet ik verder niet wat je daarmee bedoelt (een of ander .NET eigen constructie?). Als je een REST API bouwt, dan draait het doorgaans om het blootstellen van data aan de buitenwereld. De beste REST APIs (degene die het meest te rijmen zijn met de standaarden/best practices) bieden voornamelijk een CRUD interface op de data, met in meer of mindere mate wat extra business logica ertussen. Als je daarentegen een SOAP API bouwt, dan denk je meestal in termen van operaties i.p.v. data.
Maar goed, als we enkel kijken naar REST API's, ook dan kun je meer of minder business logica hebben. Laten we Twitter en Facebook als voorbeeld nemen:
Beide sociale netwerken kennen het concept van status messages, waarbij je "timeline" een combinatie is van status messages van al je vrienden. Bij Twitter worden deze in zijn totaliteit, in omgekeerd chronologische volgorde via de API aangeboden. Er is dus weinig sprake van business logica, het gaat enkel om het opvragen van alle berichten van vrienden van de geauthenticeerde gebruiker.
Bij Facebook daarentegen, bestaat je "timeline" uit de berichten van je vrienden die uitgekozen zijn door FB's algoritmes. M.a.w., je krijgt niet alle berichten te zien. Dit is volgens mij bij hun API ook het geval. Er komt dus best wat business logica aan te pas, voordat de data door de API uitgespuugd wordt.
Zoals je ziet, heb je zelf de keuze hoeveel business logica er achter je API zit, zowel in de keuze van het "protocol" (REST vs SOAP), maar ook daarna nog in de implementatie. Al is het wel zo, dat er bijna per definitie makkelijker is om een business-logica-arme REST API te hebben dan hetzelfde bij een SOAP API.