angular - http.get() bir observable döndürmez


NOT: Sorun kesinlikle ionViewDidLoad() fonksiyonunun çalışmıyor olmasıdır çünkü http.get bir observable alıyor. Daha sonra json yanıtını almak için bir istek çalıştırırken observable almaya çalışıyorum ama bir hata almıyorum ve tarayıcı konsolunda da hiçbir şey görüntülenmiyor. Neden hiçbir şey döndürmediğini bilmiyorum.

Birçok URL denedim ve ithalatları birçok kez kontrol ettim. console.log veriyi home.page.ts içine yapıştıramıyor.

    import { ServicioService } from '../servicio.service';
    import { Observable } from 'rxjs';
    import { HttpClient } from '@angular/common/http';
    ...
    ionViewDidLoad(){
          const hola = this.servicio.goWiki(this.userInput).
          subscribe((response) => {
            console.log(response);
           });
        }

servicio.service.ts

    import { Injectable } from '@angular/core';
    import { map } from 'rxjs/operators';
    import { HttpClient } from '@angular/common/http';
    import { Observable } from 'rxjs';

    @Injectable()
    export class ServicioService {

        constructor(public http: HttpClient) {
            console.log('goin!');
        }

        goWiki(userInput): Observable<any>{
            return this.http.get('https://www.reddit.com/r/gifs/top/.json?limit=105sort=hot');
        }

app.module.ts

    import { ServicioService } from './servicio.service';
    import { HttpClientModule } from '@angular/common/http';

    imports: [HttpClientModule, BrowserModule, IonicModule.forRoot(), AppRoutingModule, ComponentesModule],
      providers: [
        ServicioService,...

Sadece okunabilir bir gözlemlenebilir (observable) elde etmeyi ve ondan belirli verileri çıkarmayı umuyorum.

Cevap #1

Ionic 4 ile, Angular'da artık ionViewDidLoad yaşam döngüsü kancasına sahip değilsiniz. Bunun yerine standart Angular ngOnInit kancasını kullanın.

https://medium.com/@paulstelzer/ionic-4-and-the-lifecycle-hooks-4fe9eabb2864 adresine bakın

Ionic 4'te Yaşam Döngüleri

[...]

ionViewDidLoad hariç (çünkü ngOnInit ile aynı) ve iki nav guard dışında, Ionic 3'ten tüm Lifecycle hook'ları hâlâ kullanılabilir

Cevap #2

Bu URL'<em>https://www.json.org</em>' üzerinden bir GET işlemi yapıyorsunuz

Burada yanlış gidiyor olabilecek bir sürü şey olabilir. Bunlardan biri CORS olabilir.

Web uygulamanız CORS (çapraz kaynak isteği paylaşımı) izin vermiyorsa, çağrıdan yanıt alamazsınız. Çağrı esasen tarayıcı tarafından engellenir (tarayıcınızı kontrol edin). Ağ kaydına bakarsanız, ilk çağrı bir GET yerine OPTIONS olacaktır. Esasen, web sitesinin çağrılmasına izin verilen HTTP işlem fiillerini döndürmesi gerekir.

Makinenizdeki veya web uygulamasıyla aynı alan adında olan herhangi bir makinedeki yerel IIS sunucu uygulamasını aramayı deneyin, http.get çalışacaktır.