Tôi đang viết một trình bao bọc xung quanh fetch
mà tôi muốn thêm nội dung nào đó vào URL trước khi thực hiện yêu cầu, ví dụ: xác định tham số truy vấn. Tôi không thể tìm ra cách tạo bản sao của đối tượng Request
đã cho có URL khác với URL gốc. Mã của tôi trông giống như:Làm cách nào để sao chép đối tượng Yêu cầu bằng một URL khác?
// My function which tries to modify the URL of the request
function addLangParameter(request) {
const newUrl = request.url + "?lang=" + lang;
return new Request(newUrl, /* not sure what to put here */);
}
// My fetch wrapper
function myFetch(input, init) {
// Normalize the input into a Request object
return Promise.resolve(new Request(input, init))
// Call my modifier function
.then(addLangParameter)
// Make the actual request
.then(request => fetch(request));
}
tôi đã cố gắng đưa các yêu cầu ban đầu là arguent thứ hai để các nhà xây dựng Request
, như vậy:
function addLangParameter(request) {
const newUrl = request.url + "?lang=" + lang;
return new Request(newUrl, request);
}
mà dường như để sao chép hầu hết các thuộc tính của các yêu cầu cũ nhưng dường như không giữ nguyên số body
của yêu cầu cũ. Ví dụ:
const request1 = new Request("/", { method: "POST", body: "test" });
const request2 = new Request("/new", request1);
request2.text().then(body => console.log(body));
Tôi muốn ghi lại "kiểm tra", nhưng thay vào đó, nó ghi lại chuỗi trống, vì nội dung không được sao chép.
Tôi có cần phải làm điều gì đó rõ ràng hơn để sao chép tất cả các thuộc tính một cách chính xác hay không hoặc có lối tắt đẹp nào sẽ làm điều gì đó hợp lý cho tôi không?
Tôi đang sử dụng vùng chèn github/fetch nhưng đã thử nghiệm với cả polyfill và triển khai thực hiện fetch
gốc trong Chrome mới nhất.
Không hiển thị mã giả: hiển thị mã thực. –
@ Mike'Pomax'Kamermans Tôi đã thêm mã thực. Tôi nghĩ rằng nó làm cho nó khó khăn hơn để hiểu được vấn đề thực tế, có lẽ nó sẽ hữu ích. – Xymostech
chứ không phải là khó khăn hơn, mã mới của bạn thực sự làm cho nó rõ ràng những gì bạn đang yêu cầu, bằng cách hiển thị của bạn sử dụng các đối tượng yêu cầu trong chính mã. –