Comments (5)
Hey,
I think your meta information is important and as you say it's part of the collection as a whole.
Anyway, in your case I'd still use response extractor like this:
function(response, operation) {
var data = response.users;
data.meta = response.meta;
return data;
}
This way, you can then iterate over the data just like an array, and it also has one more property with all the meta information you need.
What do you think?
from restangular.
Also, if it's not always response.users, you could use http://underscorejs.org/#keys to find out the name of the other property that's not metadata so:
function(response, operation) {
var dataKey =_.chain(response)
.keys()
.filter(function(prop) {return prop !== 'metadata';})
.first().value();
var data = response[dataKey];
data.metadata = response.metadata;
return data;
}
This way, it works for all responses.
from restangular.
Hmm, metadata
was just an example of properties that I might get from REST call. There could be other properties. But I get the idea. I'll have to design my REST API with some convention to work with Restangular. For example, I should wrap extra properties in a metadata
object, have the collections in a data
property of my response object. Right?
I'm new to REST API design. Is this how usually REST interfaces designed?
from restangular.
Hey,
I've added ResponseExtractor for this cases. There're also some other APIs that send HTTP Status in response as well, which sucks.
In my opinion, as metadata is needed a lot of times, I'd add only one "metadata" field besides the list of elements, as metadata is needed. I've used metadata for paging, filtering among others. I think having the field for collection and then the field for metadata is a smart choice.
Otherwise, if you have different extra properties and you want to keep it that way, you can also do it. You could do:
if (_.isUndefined(response.myProp)) {
data.myProp = response.myProp;
}
And do that with all of the properties from your REST API. You're handling the case that they're not in the response, so you can do this without modifying if you wish. But yes, I like it more to have "metadata" and "data" in your REST API. That's the most common (and simpler, which is better IMO) way to do this.
from restangular.
Thanks a bunch! I'm gonna explore more and come back with more questions if I have any.
from restangular.
Related Issues (20)
- Error when injecting restangular with angular 1.6.4 HOT 2
- Nested Services or Nested Configuration
- $remove() id as query parameter HOT 1
- new web app using restangular - www.connecttal.com -
- Element.plain() behaves differently compared to Retangular.stripRestangular
- How to make sync call?
- How to set array of object as parameters using customGET ?
- Did restangular support handling text/html or text/csv response?
- Response for getList SHOULD be an array and not an object or something else HOT 1
- make etag a strong etag when used in if-None-Match HOT 1
- Cancel request - Angular 1.5 HOT 1
- getList() response Json object loss some data
- How do I append query parameter with restangular.oneUrl()? HOT 1
- Details of HTTP request sent by put method ?
- Group by count
- addFullRequestInterceptor has empty headers object
- TypeError: Converting circular structure to JSON while <restangular-object>.put() HOT 1
- Multiple remove on Restangular
- Deprecated?
- Support DELETE method with body
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from restangular.