Angular Observable에 포함 된 JSONAPI 캡처

sam452

Preston So의 , Decoupled Drupal in Practice에서 시작하여 jsonapi를 사용하여 Drupal 8의 콘텐츠를 Angular 7 앱으로 가져 오는 방법을 배우려고합니다 . 관계에서 자원을 얻는 방법을 보여주는 것보다 부족합니다.

jsonapi 사양은 별도의 호출없이 노드에서 관련 리소스를 가져올 수있는 포함 기능을 제공합니다.

사용 에 http : // localhost를 / jsonapi / 노드 / 기사 /는 MYUUID 포함 = field_image 선물이 일반적인 형식에서 좋은의 JSON 객체입니다.

jsonapi
data
--attributes
--relationships
included

포함 된 부분을 가져 오려고하는데 ArticleService가 데이터의 내용 만 가져 오며 포함 된 부분도 가져오고 싶습니다.

내 article.ts

export class Article {
  attributes: object;
  relationships: object;
  included: object;
}

내 article.service.ts

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable, of } from 'rxjs';
import { catchError, map, mergeMap } from 'rxjs/operators';
import { Article } from '../articles/article';
import { Image } from '../articles/image';

const httpOptions = {
  headers: new HttpHeaders({ 'Content-Type': 'application/json'})
}

@Injectable({
  providedIn: 'root'
})
export class ArticleService {
  private articlesUrl = 'http://localhost/jsonapi/node/article';

  constructor(private http: HttpClient) {}
  getArticle(id: string): Observable<Article>
  {
    if (id) {
      return this.http.get<Article>(this.articlesUrl + '/' + id + '?include=field_image', httpOptions)
        .pipe(
          map(res => res['data'])
         )
        .pipe(
          catchError(this.handleError([]))
    );
    } 
  }
 private handleError<T> (result?: T) {
    return (error: any): Observable<T> => {
      console.error(error);
      return of(result as T);
    }
  }
}

그래서 내 첫 번째지도 기능은 본문에서 데이터 객체를 검색합니다. 나는 그것을 확대 할 수있을 것입니다. 내가 설정 시도 map(res => res['body'])후, map(res => res[''])어떤 객체를 반환한다. rxjs / operators를 읽으면 mergeMap, concatMap과 같은 일부 연산자는 응답 본문 전체의 내용을 얻는 방법을 이해하지 못하기 때문에 실패합니다. 내 검색 결과에 도움이되는 것 같지 않은 결과를 얻었으므로 전체 응답을 얻는 방법에 대한 포인터를 찾고 있습니다.

산토스 신데

article.service.ts

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable, of } from 'rxjs';
import { catchError, map, mergeMap } from 'rxjs/operators';
import { Article } from '../articles/article';
import { Image } from '../articles/image';

const httpOptions = {
  headers: new HttpHeaders({ 'Content-Type': 'application/json'})
}

@Injectable({
  providedIn: 'root'
})
export class ArticleService {
  private articlesUrl = 'http://localhost/jsonapi/node/article';

  constructor(private http: HttpClient) {}
  getArticle(id: string): Observable<Article>
  {
    if (id) {
      return this.http.get<Article>(this.articlesUrl + '/' + id + '?include=field_image', httpOptions);
    } 
  }
 private handleError<T> (result?: T) {
    return (error: any): Observable<T> => {
      console.error(error);
      return of(result as T);
    }
  }
}

component.ts

import { Component } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { ArticleService } from './article.service'; // import ArticleService service from article.service.ts file

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  name = 'Angular';
  // inject ArticleService to the component
  constructor(private articleService : ArticleService ) {
    this.getArticle(); call getArticle function onInit
  }
  

  getArticle() {
   const id = 12;  // getting article id 12 details
   // subscribe to getArticle service method will call HTTP request and return response
   this.articleService.getArticle(id).subscribe((response)=> {
      // on successful request this block get called
      console.log('response body');
      console.log(response);
      console.log('response actual data');
      console.log(response.body);
    }, (error)=> {
      // on error this block get called like 404, 500 http status 
  })
  }
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

bash 함수에 포함 된 대화 호출 결과 캡처

분류에서Dev

Greedy Python RegEx 캡처 그룹에 "and"포함

분류에서Dev

캡슐화 된 함수에서 Promise를 처리하는 방법

분류에서Dev

별표 ** (str) ** 사이에 포함 된 문자열을 캡처하려고합니다.

분류에서Dev

단일 패턴을 사용하여 lua 스크립트의 파일에 포함 된 여러 값 캡처

분류에서Dev

포인터에 캡처 된 매개 변수와 함께 람다를 저장하는 방법이 있습니다.

분류에서Dev

R에 문자열이 포함 된 경우를 제외하고 긍정적 인 룩백 이후 캡처

분류에서Dev

C ++의 std :: function에 포함 된 람다 (캡처 중일 수 있음)를 고유하게 식별하는 방법

분류에서Dev

R에 구두점이 포함 된 부분 문자열을 캡처하는 정규식

분류에서Dev

중복 된 문자 및 문자열 그룹을 포함하지 않는 문자열에서 데이터 캡처

분류에서Dev

대시로 끝나지 않고 포함 된 이름 캡처

분류에서Dev

대시로 끝나지 않고 포함 된 이름 캡처

분류에서Dev

오디오가 포함 된 데스크탑 캡처

분류에서Dev

오디오가 포함 된 데스크탑 캡처

분류에서Dev

문자 + 숫자가 포함 된 필드의 문자 캡처

분류에서Dev

Python은 캡처 된 여러 REGEX 일치를 함수에 전달합니다.

분류에서Dev

ID 열이 포함 된 Redshift 테이블에 삽입 된 행 수를 캡처하려면 어떻게해야합니까?

분류에서Dev

점수와 밑줄이 포함 된 문자열 패턴 교체, 캡처 문제

분류에서Dev

캡처 및 그룹 정규식에 포함 된 대괄호 안의 다른 문자에 대한 특정 범위를 설정하는 방법

분류에서Dev

선택적 비 캡처 그룹 내에서 명명 된 캡처 그룹

분류에서Dev

함수에 전달 된 여러 인수 (...)의 이름을 캡처하는 방법은 무엇입니까?

분류에서Dev

람다 캡처 사이트에서 구성된 unique_ptr을 벡터로 이동하지 못함

분류에서Dev

Jasmine을 사용하여 다른 JavaScript 파일의 함수에 전달 된 인수 캡처

분류에서Dev

= 람다의 캡처 목록에서 this 포인터를 캡처합니까?

분류에서Dev

WPF 화면 캡처에 제목 표시 줄이 포함되지 않음

분류에서Dev

Windows 10의 UWP 앱에서 팝업을 포함한 화면 캡처 중지

분류에서Dev

정규식 캡처에 앵커를 포함하는 것이 더 낫습니까?

분류에서Dev

SharpDX를 사용하여 화면 캡처에 마우스 커서 포함

분류에서Dev

xslt 포함에서 잘못된 URI 문자 처리

Related 관련 기사

  1. 1

    bash 함수에 포함 된 대화 호출 결과 캡처

  2. 2

    Greedy Python RegEx 캡처 그룹에 "and"포함

  3. 3

    캡슐화 된 함수에서 Promise를 처리하는 방법

  4. 4

    별표 ** (str) ** 사이에 포함 된 문자열을 캡처하려고합니다.

  5. 5

    단일 패턴을 사용하여 lua 스크립트의 파일에 포함 된 여러 값 캡처

  6. 6

    포인터에 캡처 된 매개 변수와 함께 람다를 저장하는 방법이 있습니다.

  7. 7

    R에 문자열이 포함 된 경우를 제외하고 긍정적 인 룩백 이후 캡처

  8. 8

    C ++의 std :: function에 포함 된 람다 (캡처 중일 수 있음)를 고유하게 식별하는 방법

  9. 9

    R에 구두점이 포함 된 부분 문자열을 캡처하는 정규식

  10. 10

    중복 된 문자 및 문자열 그룹을 포함하지 않는 문자열에서 데이터 캡처

  11. 11

    대시로 끝나지 않고 포함 된 이름 캡처

  12. 12

    대시로 끝나지 않고 포함 된 이름 캡처

  13. 13

    오디오가 포함 된 데스크탑 캡처

  14. 14

    오디오가 포함 된 데스크탑 캡처

  15. 15

    문자 + 숫자가 포함 된 필드의 문자 캡처

  16. 16

    Python은 캡처 된 여러 REGEX 일치를 함수에 전달합니다.

  17. 17

    ID 열이 포함 된 Redshift 테이블에 삽입 된 행 수를 캡처하려면 어떻게해야합니까?

  18. 18

    점수와 밑줄이 포함 된 문자열 패턴 교체, 캡처 문제

  19. 19

    캡처 및 그룹 정규식에 포함 된 대괄호 안의 다른 문자에 대한 특정 범위를 설정하는 방법

  20. 20

    선택적 비 캡처 그룹 내에서 명명 된 캡처 그룹

  21. 21

    함수에 전달 된 여러 인수 (...)의 이름을 캡처하는 방법은 무엇입니까?

  22. 22

    람다 캡처 사이트에서 구성된 unique_ptr을 벡터로 이동하지 못함

  23. 23

    Jasmine을 사용하여 다른 JavaScript 파일의 함수에 전달 된 인수 캡처

  24. 24

    = 람다의 캡처 목록에서 this 포인터를 캡처합니까?

  25. 25

    WPF 화면 캡처에 제목 표시 줄이 포함되지 않음

  26. 26

    Windows 10의 UWP 앱에서 팝업을 포함한 화면 캡처 중지

  27. 27

    정규식 캡처에 앵커를 포함하는 것이 더 낫습니까?

  28. 28

    SharpDX를 사용하여 화면 캡처에 마우스 커서 포함

  29. 29

    xslt 포함에서 잘못된 URI 문자 처리

뜨겁다태그

보관