Update Docs - Http
This commit is contained in:
parent
14776ba577
commit
cba5d1f3a2
147
docs/http.md
147
docs/http.md
@ -0,0 +1,147 @@
|
||||
# Http & Backend interaction
|
||||
|
||||
## Structure
|
||||
| Element | Description |
|
||||
| --------- | --------------------------------------------- |
|
||||
| http Verb | GET, PUT, DELETE, POST, ... |
|
||||
| ULR | API Endpoint, domain.tld/user/1 |
|
||||
| Headers | Metadata {"Content-Type": "application/json"} |
|
||||
| Body | Payload |
|
||||
|
||||
## Setup
|
||||
|
||||
Add dependencies in `app.module.ts`
|
||||
```ts
|
||||
import { HttpClientModule } from '@angular/common/http';
|
||||
|
||||
@ngModule({
|
||||
imports: [ HttpClientModule ]
|
||||
})
|
||||
```
|
||||
|
||||
## POST
|
||||
|
||||
POST-Request
|
||||
```ts
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { HttpClient } from '@angular/common/http';
|
||||
|
||||
@Component({
|
||||
selector: 'app-root',
|
||||
templateUrl: './app.component.html',
|
||||
styleUrls: ['./app.component.css']
|
||||
})
|
||||
export class AppComponent implements OnInit {
|
||||
loadedPosts = [];
|
||||
|
||||
// inject the service
|
||||
constructor(private http: HttpClient) {}
|
||||
|
||||
ngOnInit() {}
|
||||
|
||||
onCreatePost(postData: { title: string; content: string }) {
|
||||
// Send Http request
|
||||
this.http
|
||||
.post(
|
||||
'https://ng-complete-guide-c56d3.firebaseio.com/posts.json',
|
||||
postData
|
||||
)
|
||||
.subscribe(responseData => {
|
||||
console.log(responseData);
|
||||
});
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
POST returns an observable which the function has to be subscribed to. If no one is interested in the result, the POST-request will not be sent.
|
||||
|
||||
## GET
|
||||
|
||||
GET-Request
|
||||
```ts
|
||||
private fetchPost() {
|
||||
// Send Http request
|
||||
this.http
|
||||
.get(
|
||||
'https://ng-complete-guide-c56d3.firebaseio.com/posts.json'
|
||||
)
|
||||
.subscribe(posts => {
|
||||
console.log(posts);
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
## DELETE
|
||||
|
||||
DELETE-Request
|
||||
```ts
|
||||
private fetchPost() {
|
||||
// Send Http request
|
||||
this.http.delte('https://ng-complete-guide-c56d3.firebaseio.com/posts.json')
|
||||
.subscribe(doSomething);
|
||||
}
|
||||
```
|
||||
|
||||
## Errorhandling
|
||||
|
||||
Errorhandling on a GET-Request
|
||||
```ts
|
||||
private fetchPost() {
|
||||
// Send Http request
|
||||
this.http
|
||||
.get(
|
||||
'https://ng-complete-guide-c56d3.firebaseio.com/posts.json'
|
||||
)
|
||||
.subscribe(posts => {
|
||||
console.log(posts);
|
||||
}, error => {
|
||||
this.error = error.message;
|
||||
console.log(error);
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
catchError / throwError
|
||||
|
||||
```ts
|
||||
.subscribe(posts => {
|
||||
console.log(posts);
|
||||
}, error => {
|
||||
catchError(errorRes => {
|
||||
return throwError(errorRes);
|
||||
})
|
||||
});
|
||||
```
|
||||
|
||||
## Headers
|
||||
|
||||
Cofigurate the request with headers
|
||||
```ts
|
||||
this.http
|
||||
.get(
|
||||
'https://ng-complete-guide-c56d3.firebaseio.com/posts.json',
|
||||
{
|
||||
headers: new HttpHeaders( {
|
||||
'key': 'value'
|
||||
})
|
||||
}
|
||||
)
|
||||
```
|
||||
|
||||
## Query Params
|
||||
|
||||
Adding query Params
|
||||
```ts
|
||||
this.http
|
||||
.get(
|
||||
'https://ng-complete-guide-c56d3.firebaseio.com/posts.json',
|
||||
{
|
||||
headers: new HttpHeaders( {
|
||||
'key': 'value'
|
||||
}),
|
||||
params: new HttpParams().set('customerId', '69')
|
||||
}
|
||||
)
|
||||
```
|
||||
|
||||
Will result to the URL like: `https://ng-complete-guide-c56d3.firebaseio.com/posts.json?customerId=69`
|
Loading…
Reference in New Issue
Block a user