sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan eksponerer jeg en ny REST-metode for gennem et Spring Data MongoDB-lager med ALPS/HATEOAS-metadata?

tl;dr

Det skal bruge tilpassede implementeringer til lageret og controlleren.

Detaljer

Vi skal sørge for, at vi ikke farer vild i alle de forskellige aspekter, du nævner her. Jeg vil prøve at løse grenene fra bunden opad:

Udførelse af MongoDB-scripts

Som referencedokumentation om udførelse af scripts med MongoDB stater (og du allerede har opdaget), er funktionaliteten leveret by MongoTemplate 's ScriptOperations . Derfor skal det være klart, hvordan man bruger denne API. Se Javadoc for mere information.

Udførelse af scripts via Spring Data repositories

Den næste ting, du beder om, er at udføre disse scripts gennem repository-abstraktionen. For ikke at smide barnet ud med badevandet her, så sørg for, at vi forstår formålet med et depot:det simulerer en samling af aggregerede rødder og adgang til det uden at afsløre den underliggende persistensmekanisme . Eksponeringstyper som ExecutableMongoScript på depotet ville bryde sidstnævnte træk. Den korrekte tilgang her er således at lave en tilpasset implementering til den pågældende funktionalitet som beskrevet i referencedokumentation om Spring Data-lagre .

Afsløring af funktionaliteten via REST

Jeg går ud fra, at du refererer til Spring Data RESTs funktion for at afsløre en dedikeret ressource til repository-forespørgselsmetoden i dit spørgsmål. Spring Data REST afslører i øjeblikket kun deklarative forespørgselsmetoder automatisk, for det meste af den grund, at det er svært at ræsonnere om den korrekte HTTP-metode for at understøtte tilpassede implementeringer, da vi ikke kan gætte, hvad der sker inde i metoden.

Den anbefalede måde at afsløre brugerdefinerede lagerforespørgselsmetoder ved hjælp af en brugerdefineret controller med en @RequestMapping passer til dit formål, kalder lageret og bruger en PersistentEntityResourceAssembler kan injiceres i behandlermetoden for at producere en PersistentEntityResource at vende tilbage.




  1. Hvordan bruger man interface type som en model i mgo (Go)?

  2. Hvad kan gøres ved at bruge CKANs asynkrone baggrundsjob?

  3. Forbinder Google Cloud Functions igen til min MongoDB-klient for hver HTTP-anmodning?

  4. Mongoose gruppe og tælle