UNPKG

8.21 kBTypeScriptView Raw
1import { Observable } from '../Observable';
2import { AjaxConfig } from './types';
3import { AjaxResponse } from './AjaxResponse';
4export interface AjaxCreationMethod {
5 /**
6 * Creates an observable that will perform an AJAX request using the
7 * [XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) in
8 * global scope by default.
9 *
10 * This is the most configurable option, and the basis for all other AJAX calls in the library.
11 *
12 * ## Example
13 *
14 * ```ts
15 * import { ajax } from 'rxjs/ajax';
16 * import { map, catchError, of } from 'rxjs';
17 *
18 * const obs$ = ajax({
19 * method: 'GET',
20 * url: 'https://api.github.com/users?per_page=5',
21 * responseType: 'json'
22 * }).pipe(
23 * map(userResponse => console.log('users: ', userResponse)),
24 * catchError(error => {
25 * console.log('error: ', error);
26 * return of(error);
27 * })
28 * );
29 * ```
30 */
31 <T>(config: AjaxConfig): Observable<AjaxResponse<T>>;
32 /**
33 * Perform an HTTP GET using the
34 * [XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) in
35 * global scope. Defaults to a `responseType` of `"json"`.
36 *
37 * ## Example
38 *
39 * ```ts
40 * import { ajax } from 'rxjs/ajax';
41 * import { map, catchError, of } from 'rxjs';
42 *
43 * const obs$ = ajax('https://api.github.com/users?per_page=5').pipe(
44 * map(userResponse => console.log('users: ', userResponse)),
45 * catchError(error => {
46 * console.log('error: ', error);
47 * return of(error);
48 * })
49 * );
50 * ```
51 */
52 <T>(url: string): Observable<AjaxResponse<T>>;
53 /**
54 * Performs an HTTP GET using the
55 * [XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) in
56 * global scope by default, and a `responseType` of `"json"`.
57 *
58 * @param url The URL to get the resource from
59 * @param headers Optional headers. Case-Insensitive.
60 */
61 get<T>(url: string, headers?: Record<string, string>): Observable<AjaxResponse<T>>;
62 /**
63 * Performs an HTTP POST using the
64 * [XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) in
65 * global scope by default, and a `responseType` of `"json"`.
66 *
67 * Before sending the value passed to the `body` argument, it is automatically serialized
68 * based on the specified `responseType`. By default, a JavaScript object will be serialized
69 * to JSON. A `responseType` of `application/x-www-form-urlencoded` will flatten any provided
70 * dictionary object to a url-encoded string.
71 *
72 * @param url The URL to get the resource from
73 * @param body The content to send. The body is automatically serialized.
74 * @param headers Optional headers. Case-Insensitive.
75 */
76 post<T>(url: string, body?: any, headers?: Record<string, string>): Observable<AjaxResponse<T>>;
77 /**
78 * Performs an HTTP PUT using the
79 * [XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) in
80 * global scope by default, and a `responseType` of `"json"`.
81 *
82 * Before sending the value passed to the `body` argument, it is automatically serialized
83 * based on the specified `responseType`. By default, a JavaScript object will be serialized
84 * to JSON. A `responseType` of `application/x-www-form-urlencoded` will flatten any provided
85 * dictionary object to a url-encoded string.
86 *
87 * @param url The URL to get the resource from
88 * @param body The content to send. The body is automatically serialized.
89 * @param headers Optional headers. Case-Insensitive.
90 */
91 put<T>(url: string, body?: any, headers?: Record<string, string>): Observable<AjaxResponse<T>>;
92 /**
93 * Performs an HTTP PATCH using the
94 * [XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) in
95 * global scope by default, and a `responseType` of `"json"`.
96 *
97 * Before sending the value passed to the `body` argument, it is automatically serialized
98 * based on the specified `responseType`. By default, a JavaScript object will be serialized
99 * to JSON. A `responseType` of `application/x-www-form-urlencoded` will flatten any provided
100 * dictionary object to a url-encoded string.
101 *
102 * @param url The URL to get the resource from
103 * @param body The content to send. The body is automatically serialized.
104 * @param headers Optional headers. Case-Insensitive.
105 */
106 patch<T>(url: string, body?: any, headers?: Record<string, string>): Observable<AjaxResponse<T>>;
107 /**
108 * Performs an HTTP DELETE using the
109 * [XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) in
110 * global scope by default, and a `responseType` of `"json"`.
111 *
112 * @param url The URL to get the resource from
113 * @param headers Optional headers. Case-Insensitive.
114 */
115 delete<T>(url: string, headers?: Record<string, string>): Observable<AjaxResponse<T>>;
116 /**
117 * Performs an HTTP GET using the
118 * [XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) in
119 * global scope by default, and returns the hydrated JavaScript object from the
120 * response.
121 *
122 * @param url The URL to get the resource from
123 * @param headers Optional headers. Case-Insensitive.
124 */
125 getJSON<T>(url: string, headers?: Record<string, string>): Observable<T>;
126}
127/**
128 * There is an ajax operator on the Rx object.
129 *
130 * It creates an observable for an Ajax request with either a request object with
131 * url, headers, etc or a string for a URL.
132 *
133 * ## Examples
134 *
135 * Using `ajax()` to fetch the response object that is being returned from API
136 *
137 * ```ts
138 * import { ajax } from 'rxjs/ajax';
139 * import { map, catchError, of } from 'rxjs';
140 *
141 * const obs$ = ajax('https://api.github.com/users?per_page=5').pipe(
142 * map(userResponse => console.log('users: ', userResponse)),
143 * catchError(error => {
144 * console.log('error: ', error);
145 * return of(error);
146 * })
147 * );
148 *
149 * obs$.subscribe({
150 * next: value => console.log(value),
151 * error: err => console.log(err)
152 * });
153 * ```
154 *
155 * Using `ajax.getJSON()` to fetch data from API
156 *
157 * ```ts
158 * import { ajax } from 'rxjs/ajax';
159 * import { map, catchError, of } from 'rxjs';
160 *
161 * const obs$ = ajax.getJSON('https://api.github.com/users?per_page=5').pipe(
162 * map(userResponse => console.log('users: ', userResponse)),
163 * catchError(error => {
164 * console.log('error: ', error);
165 * return of(error);
166 * })
167 * );
168 *
169 * obs$.subscribe({
170 * next: value => console.log(value),
171 * error: err => console.log(err)
172 * });
173 * ```
174 *
175 * Using `ajax()` with object as argument and method POST with a two seconds delay
176 *
177 * ```ts
178 * import { ajax } from 'rxjs/ajax';
179 * import { map, catchError, of } from 'rxjs';
180 *
181 * const users = ajax({
182 * url: 'https://httpbin.org/delay/2',
183 * method: 'POST',
184 * headers: {
185 * 'Content-Type': 'application/json',
186 * 'rxjs-custom-header': 'Rxjs'
187 * },
188 * body: {
189 * rxjs: 'Hello World!'
190 * }
191 * }).pipe(
192 * map(response => console.log('response: ', response)),
193 * catchError(error => {
194 * console.log('error: ', error);
195 * return of(error);
196 * })
197 * );
198 *
199 * users.subscribe({
200 * next: value => console.log(value),
201 * error: err => console.log(err)
202 * });
203 * ```
204 *
205 * Using `ajax()` to fetch. An error object that is being returned from the request
206 *
207 * ```ts
208 * import { ajax } from 'rxjs/ajax';
209 * import { map, catchError, of } from 'rxjs';
210 *
211 * const obs$ = ajax('https://api.github.com/404').pipe(
212 * map(userResponse => console.log('users: ', userResponse)),
213 * catchError(error => {
214 * console.log('error: ', error);
215 * return of(error);
216 * })
217 * );
218 *
219 * obs$.subscribe({
220 * next: value => console.log(value),
221 * error: err => console.log(err)
222 * });
223 * ```
224 */
225export declare const ajax: AjaxCreationMethod;
226export declare function fromAjax<T>(init: AjaxConfig): Observable<AjaxResponse<T>>;
227//# sourceMappingURL=ajax.d.ts.map
\No newline at end of file