나는 호출하는 서비스가 PokéAPI을 시를 https://pokeapi.co/api/v2/pokemon/
.
반환하려는 Pokemon을 지정하지 않으면 API는 Pokemon의 URL이 포함 된 페이지가 매겨진 리소스 목록을 반환합니다. https://pokeapi.co/docs/v2#pokemon-section
내 서비스의 로컬 배열 내에 해당 URL 목록을 저장하고 싶습니다.
나는 시도했다 :
getListOfPokemonUrls(): Observable<any> {
return this.http.get<any>(this.pokeApiUrl)
.pipe(
map((response: any[]) => this.pokemonResources = response.results)
);
}
내 생성자에서 (테스트 목적으로) :
const y = this.getListOfPokemonUrls();
그러나 그 함수 this.pokemonResources
배열을 넘어 서면 비어 있습니다.
subscribe()
.Stackblitz 데모 작업을 참조하십시오 .
PokeAPIService
생성자에서 PokeAPI 서버를 호출 하는 Angular 서비스 를 생성했습니다 . constructor(private http: HttpClient) {
this.getListOfPokemonUrls().subscribe(
(results: Array<Pokemon>) => {
for(let p of results) {
this.pokemons.push(p)
}
}
)
}
의 업데이트 된 구현은 getListOfPokemonURLs
결과 를 반환하므로에 대한 호출 내에서 처리 할 수 있습니다 subscribe()
.
Pokemon
및에 대해 정의 된 인터페이스 PokeAPIResponse
:export interface Pokemon {
name: string,
url: string
}
interface PokeAPIResponse {
count: number,
next: string,
previous: string,
results: Array<Pokemon>
}
getListOfPokemonUrls()
새로운 인터페이스 유형 및 수정 RxJS은 map
되도록 response.results
직접 반환됩니다. private getListOfPokemonUrls(): Observable<Array<Pokemon>> {
return this.http.get<any>(POKEAPI_URL)
.pipe(
map((response: PokeAPIResponse) => response.results)
);
}
curl https://pokeapi.co/api/v2/pokemon/
다음 응답을 반환합니다.
{
"count":1050,
"next":"https://pokeapi.co/api/v2/pokemon/?offset=20&limit=20",
"previous":null,
"results":[
{"name":"bulbasaur","url":"https://pokeapi.co/api/v2/pokemon/1/"},
{"name":"ivysaur","url":"https://pokeapi.co/api/v2/pokemon/2/"},
{"name":"venusaur","url":"https://pokeapi.co/api/v2/pokemon/3/"},
{"name":"charmander","url":"https://pokeapi.co/api/v2/pokemon/4/"},
{"name":"charmeleon","url":"https://pokeapi.co/api/v2/pokemon/5/"},
{"name":"charizard","url":"https://pokeapi.co/api/v2/pokemon/6/"},
{"name":"squirtle","url":"https://pokeapi.co/api/v2/pokemon/7/"},
...
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다