typescript - วิธีเพิ่มหัวข้อคำขอ HTTP ใน ng2-completer
ฉันกำลังประสบปัญหามาสองวันแล้วในการแก้ไขปัญหา header ที่ฉันกำลังเจอ ฉันสามารถเรียกใช้งาน API ของ ng2-completer ใน Postman ได้โดยไม่มีปัญหาใดๆ
ฉันต้องส่งโทเค็นในส่วนหัวของคำขอเพื่อยืนยันตัวตน มันทำงานได้ดีใน Postman แต่เมื่อฉันลองใน TypeScript มันกลับไม่ทำงานเลย
this.dataService = completerService.remote("https://arsapi.azurewebsites.net/api/searchusers?searchstring=", 'userName', 'userName');
let options = new RequestOptions({ headers: new Headers() });
options.headers.set('Content-Type', 'application/json');
options.headers.set("Authorization", 'Bearer JeBVR3A');
this.dataService.requestOptions(options);
คำขอข้างต้นใน TypeScript ไม่ส่งเฮดเดอร์
ทำไมหัวข้อคำขอของฉันถึงไม่ถูกรวมอยู่ในการขอ?
ความช่วยเหลือใด ๆ ก็จะได้รับการชื่นชม
คำตอบ #1
ฉันคิดว่าสิ่งที่เกิดขึ้นคือคุณกำลังเพิ่มหัวข้อ (headers) ของคุณไปยังคำขอในโค้ด หลังจากที่คำขอถูกส่งไปแล้ว ซึ่งเป็นเหตุผลที่คุณไม่เห็นมันในคำขอ
คุณจำเป็นต้องเพิ่มบรรทัดเหล่านี้ภายในฟังก์ชัน completerService.remote() ของคุณ เนื่องจากนี่คือที่ที่มีการส่งคำขอ HTTP จริง ๆ
let options = new RequestOptions({ headers: new Headers() });
options.headers.set('Content-Type', 'application/json');
options.headers.set("Authorization", 'Bearer JeBVR3A');
this.dataService.requestOptions(options);
ฉันไม่รู้ว่าฟังก์ชัน completerService.remote() ของคุณมีลักษณะอย่างไร แต่ไม่ว่าบรรทัดโค้ดใดที่กำลังทำ HTTP GET คุณจะต้องวางบรรทัดด้านบนนี้ก่อน จากนั้นส่งตัวแปร options ให้กับมัน
คำตอบ #2
ฉันทำสิ่งนี้ในคอมโพเนนต์ของฉันและมันทำงานได้:
constructor(
private completerService: CompleterService,
private authenticationService: AuthenticationService
) {
this.dataService = completerService.remote(`${environment.baseUrl}/cep/autocomplete?term=`, 'label', 'label');
let options = new RequestOptions({headers: new Headers()});
options.headers.set('Authorization', authenticationService.getToken());
options.headers.set('Content-Type', 'application/json');
this.dataService.requestOptions(options);
}
