angular 7 tutorial




এপিআই প্রতিক্রিয়া থেকে প্রতিক্রিয়া শিরোনাম পড়ুন-কৌণিক 5+টাইপস্ক্রিপ্ট (4)

আপনার নতুন HttpClient ব্যবহার করা উচিত। HTTP

http
  .get<any>('url', {observe: 'response'})
  .subscribe(resp => {
    console.log(resp.headers.get('X-Token'));
  });

আমি একটি HTTP অনুরোধ ট্রিগার করছি এবং আমি এটি থেকে একটি বৈধ প্রতিক্রিয়া পাচ্ছি। প্রতিক্রিয়াটির একটি শিরোনাম এক্স-টোকেনও রয়েছে যা আমি পড়তে চাই। আমি শিরোনামগুলি পড়ার জন্য নীচের কোডটি চেষ্টা করছি, তবে, ফলস্বরূপ আমি নালু হয়ে যাই

this.currentlyExecuting.request = this.http.request(reqParams.type, reqParams.url, {
    body: reqParams.body,
    responseType: 'json',
    observe: 'response'
}).subscribe(
    (_response: any) => {
        // Also tried _response.headers.init();
        const header = _response.headers.get('X-Token');
        console.log(header);
        onComplete(_response.body);
     },
    _error => {
        onComplete({
            code: -1,
            message: Constants.WEBSERVICE_INTERNET_NOT_CONNNECTED
        });
    }
);

Chrome এর পরিদর্শনে চেক করা হলে, API প্রতিক্রিয়া শিরোনাম উপস্থিত রয়েছে তা দেখায়। স্ট্যাকওভারফ্লোতে কয়েকটি সম্পর্কিত প্রশ্ন দেখার চেষ্টা করেও কিছুই সাহায্য করেনি।


আপনি নীচের কোড ব্যবহার করে শিরোনাম পেতে পারেন

let main_headers = {}
this.http.post(url,
  {email: this.username, password: this.password},
  {'headers' : new HttpHeaders ({'Content-Type' : 'application/json'}), 'responseType': 'text', observe:'response'})
  .subscribe(response => {
    const keys = response.headers.keys();
    let headers = keys.map(key => {
      `${key}: ${response.headers.get(key)}`
        main_headers[key] = response.headers.get(key)
       }
      );
  });

পরে আমরা প্রয়োজনীয় শিরোনামটি json অবজেক্টটি পেতে পারি।

header_list['X-Token']

আপনি সার্ভার দিক থেকে এক্স-টোকেন উন্মোচন করেছেন? "অ্যাক্সেস-কন্ট্রোল-এক্সপোজ-হেডার" ব্যবহার করে। যেহেতু সমস্ত শিরোনামকে ক্লায়েন্টের পক্ষ থেকে অ্যাক্সেস করার অনুমতি নেই, আপনাকে সেগুলি সার্ভার দিক থেকে প্রকাশ করতে হবে

এছাড়াও আপনার সম্মুখভাগে, আপনি { observe: 'response'} মত ব্যবহার করে একটি সম্পূর্ণ প্রতিক্রিয়া পেতে নতুন HTTP মডিউল ব্যবহার করতে পারেন

http
  .get<any>('url', {observe: 'response'})
  .subscribe(resp => {
    console.log(resp.headers.get('X-Token'));
  });

হৃষীকেশ কালে যেমন ব্যাখ্যা করেছেন আমাদের অ্যাক্সেস-কন্ট্রোল-এক্সপোজ-হেডারগুলি পাস করতে হবে।

এখানে কীভাবে আমরা ওয়েবএপিআই / এমভিসি পরিবেশে এটি করতে পারি:

response.addHeader("Access-Control-Expose-Headers", "Authorization");
response.addHeader("Access-Control-Allow-Headers", "Authorization, X-PINGOTHER, Origin, X-Requested-With, Content-Type, Accept, X-Custom-header");
response.addHeader(HEADER_STRING, TOKEN_PREFIX + token); // HEADER_STRING == Authorization

আরেকটি উপায় হ'ল আমরা ওয়েবএপিকনফিগ.সি ফাইলগুলিতে নীচের মতো কোড যুক্ত করতে পারি।

this.authenticationService.login(this.f.email.value, this.f.password.value)
  .pipe(first())
  .subscribe(
    (data: HttpResponse<any>) => {
      console.log(data.headers.get('authorization'));
    },
    error => {
      this.loading = false;
    });

** আমরা নিচের মত ওয়েবকনফিগ ফাইলটিতে কাস্টম শিরোনাম যুক্ত করতে পারি। *

return this.http.post<any>(Constants.BASE_URL + 'login', {username: username, password: password},
  {observe: 'response' as 'body'})
  .pipe(map(user => {
       return user;
  }));

আমরা একটি অ্যাট্রিবিউট তৈরি করতে পারি এবং বৈশিষ্ট্যটি দিয়ে পদ্ধতিটি সজ্জিত করতে পারি।

শুভ কোডিং !!





angular5