https://github.com/jaystack/odata-v4-resource
OData V4 Resource path handler
https://github.com/jaystack/odata-v4-resource
Last synced: 3 months ago
JSON representation
OData V4 Resource path handler
- Host: GitHub
- URL: https://github.com/jaystack/odata-v4-resource
- Owner: jaystack
- Created: 2016-07-01T13:53:08.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2016-09-05T09:56:20.000Z (over 8 years ago)
- Last Synced: 2025-02-17T04:05:22.930Z (4 months ago)
- Language: TypeScript
- Size: 43 KB
- Stars: 2
- Watchers: 8
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# OData V4 Resource
OData v4 resource path handler
## Using low-level
_createODataPath(exampleUri, metadata)_: creates an Express route path from an example OData URI
```javascript
var createServiceOperationCall = require('../lib/index').createServiceOperationCall;
var createODataPath = require('../lib/index').createODataPath;app.get(createODataPath('/Kittens(1)/Kittens(2)/Default.Rect(id=1)', metadata), function(req, res, next){
var call = createServiceOperationCall(req.url, metadata);
res.send(call);
});
```## Using resource controller
Create a router module:
```javascript
var express = require('express');
var router = express.Router();var ODataController = require('../../lib/index').ODataController;
var metadata = require('../metadata');function MyController(req, res, next){
this.MySingleton = {
/* ... */
};
this.MyAction = function(){
/* ... */
return {
/* ... */
};
};
this.MyFunction = function(param1, param2){
/* ... */
return {
/* ... */
};
};
this.MyEntitySet = function(key){
return new Promise(function(resolve, reject){
var start = Date.now();
setTimeout(function(){
resolve({
/* ... */
});
}, Math.random() * 3000);
});
};
this.$value = function(){
return { /* ... */ };
};
this.$ref = function(){
/* ... */
};
}router.use(ODataController(MyController, metadata));
module.exports = router;
```Use your controller router in Express:
```javascript
app.use('/odata', require('./controllers/MyController'));
```