API в среднем стеке - PullRequest
0 голосов
/ 31 мая 2019

Можно ли сделать следующее с сервисом в 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 в службе выше и выполнение других операций, перечисленных выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...