-
Notifications
You must be signed in to change notification settings - Fork 5
/
rest-api.html
145 lines (113 loc) · 3.87 KB
/
rest-api.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<!--
@license
Copyright 2015 Anton Platonov <[email protected]>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<link rel="import" href="../polymer/polymer.html">
<link rel="import" href="rest-api-resource.html">
<!--
An element providing declarative data bindings to REST API.
Example:
<rest-api url="http://localhost:3000">
<rest-api-resource name="books" collection="{{books}}"></rest-api-resource>
</rest-api>
### AJAX Transport Elements
Transport element is an `<iron-ajax>` or a compatible element that is used by
the `<rest-api>` element to perform the API requests.
By default, the internal `<iron-ajax>` instance is used by `<rest-api>`.
You can override the default internal transport by placing a custom transport
element, that has `rest-api-resource` element, to the light DOM contents of
`<rest-api>`.
The transport placed in the parent `<rest-api>` or `<rest-api-resource>` are
also used by the nested `<rest-api-resource>` elements.
In the following example, the `<custom-transport>` element is used as a
transport for the entire API:
<rest-api url="http://localhost:3000">
<custom-transport rest-api-transport></custom-transport>
<rest-api-resource name="books" collection="{{books}}"></rest-api-resource>
</rest-api>
This example uses the default transport to query the “books”, but the custom
transport is assigned for the “authors” collection.
<rest-api url="http://localhost:3000">
<rest-api-resource name="books" collection="{{books}}"></rest-api-resource>
<rest-api-resource name="authors" collection="{{authors}}">
<custom-transport rest-api-transport></custom-transport>
</rest-api-resource>
</rest-api>
See the [RestApi.AbstractTransportBehavior](#RestApi.AbstractTransportBehavior)
API documentation page for the custom transport elements API.
@demo
@demo demo/json-server.html
-->
<dom-module id="rest-api">
<template>
<iron-ajax id="ajax" content-type="application/json" bubbles></iron-ajax>
<slot></slot>
</template>
</dom-module>
<script>
Polymer({
is: 'rest-api',
properties: {
/**
* REST API root url.
*/
url: {
type: String,
notify: true
},
/**
* Default set of request parameters used in all API requests.
*
* Inherited by child `rest-api-resource` elements.
*/
params: {
type: Object,
notify: true
},
/**
* Default set of request headers used in all API requests.
*/
headers: Object,
/**
* Allow the use of query parameters on other requests than GET requests.
*/
allowNonGetParams: {
type: Boolean,
value: false
},
/**
* The model id attribute name. Used for model get and save API requests.
*
* Inherited by child `rest-api-resource` elements.
*/
idAttribute: {
type: String,
value: 'id'
},
/**
* Disable send any data changes to the API.
*
* Inherited by child `rest-api-resource` elements.
*/
readOnly: Boolean,
/**
* Enable bubbling for `error`, `request` and `response` events.
*
* Inherited by child `rest-api-resource` elements.
*/
bubbles: Boolean
},
get _transportElement() {
return this.queryEffectiveChildren('[rest-api-transport]') || this.$.ajax;
}
});
</script>