Можно ли сделать следующее с сервисом в angular6?Как позвонить в API для следующего требования?1. Обязательная проверка свойств 2. верните код ответа 400 с правильным сообщением, если есть какие-либо ошибки обязательной проверки 3. проверки типа данных 4. верните код ответа 400 с правильным сообщением 5. Инициализируйте вызов БД 6. запустите запросы БД и верните ответ 7.Если во время вызова БД возникнут какие-либо ошибки, верните код ответа 500 с правильным сообщением 8. В случае успеха верните объект ответа.
Это что-то новое для меня, поэтому я не знаю, как его реализовать.Так что ничего не могу попробовать.
// blog.service.ts
import { Injectable, Inject, Output, EventEmitter } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
import { APP_CONFIG, AppConfig } from '../app.config';
import { map } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
})
export class BlogService {
@Output() userLoggedIn: EventEmitter<any> = new EventEmitter();
constructor(private http: HttpClient, @Inject(APP_CONFIG) private _config: AppConfig) { }
////////////////////////////////////////////////////
Save(blogForm: any): Observable<any> {
return Observable.create(observer => {
this.http.post(this._config.apiEndpoint + '/newblog',
JSON.stringify(blogForm), { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) }
)
.subscribe((response: Response) => {
observer.next(response);
observer.complete();
});
});
}
////////////////////////////////////////////////////
allBlogs(): any{
return this.http.get(this._config.apiEndpoint + '/getblogs').pipe(map(response=>response));
}
////////////////////////////////////////////////////
recentBlogs(): any{
return this.http.get(this._config.apiEndpoint + '/get-recent-blogs').pipe(map(response=>response));
}
////////////////////////////////////////////////////
viewBlog(blog_id:number): any{
return this.http.get(this._config.apiEndpoint+'/viewblog/'+blog_id).pipe(map(response=>response));
}
////////////////////////////////////////////////////
datewiseBlogs(year:any,month:any): any{
return this.http.get(this._config.apiEndpoint+'/year-blogs/'+year+'/month/'+month).pipe(map(response=>response));
}
////////////////////////////////////////////////////
deleteblog(blogid): Observable<any> {
return Observable.create(observer => {
this.http.post(this._config.apiEndpoint+'/deleteblog', { _id: blogid }, { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) }
).subscribe((response: Response) => {
observer.next(response);
observer.complete();
});
});
}
////////////////////////////////////////////////////
editblog(blogForm: any): Observable<any> {
return Observable.create(observer => {
this.http.post(this._config.apiEndpoint + '/updateblog',
JSON.stringify(blogForm), { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) }
).subscribe((response: Response) => {
observer.next(response);
observer.complete();
});
});
}
////////////////////////////////////////////////////
}
Ожидаемый результат - вызов API в службе выше и выполнение других операций, перечисленных выше.