我想從Angular2(使用打字稿)向Laravel發出的API發送PUT請求。我正在做FormData類,因爲這是我可以附加一個文件到請求。 POST方法運行良好,但是當我嘗試使用PUT方法更新模型時,API會收到一個空請求。Angular2 http put方法不發送formData
我做了一些調試,FormData包含了預期的數據,所以我幾乎可以確定我的數據在PUT請求中丟失了。
服務:
import {Http, Headers, Response, RequestOptions} from "@angular/http";
@Injectable()
export class SensorService {
public data: Data[] = [];
public sensors: Sensor[] = [];
constructor(private http: Http,
private authService: AuthService) {
}
updateSensor(id: number, nombreNevera: string, ciudad: string, empresa_id: number,
tipoSensor: string, telefonoMarcado: number,
telefonoMarcadoB: number = null, telefonoMarcadoC: number = null,
telefonoMarcadoD: number = null, fechaCalibracion: number = null,
temMax: number = null, temMin: number = null, humeMax: number = null,
humeMin: number = null, correos: any = null, fileToUpload: any = null) {
let formData: FormData = new FormData();
formData.append('nombreNevera', nombreNevera);
formData.append('cuidad', ciudad);
formData.append('empresa_id', empresa_id);
formData.append('tipoSensor', tipoSensor);
formData.append('telefonoMarcado', telefonoMarcado);
formData.append('telefonoMarcadoB', telefonoMarcadoB);
formData.append('telefonoMarcadoC', telefonoMarcadoC);
formData.append('telefonoMarcadoD', telefonoMarcadoD);
formData.append('fechaCalibracion', fechaCalibracion);
formData.append('humeMax', humeMax);
formData.append('humeMax', humeMin);
formData.append('temMin', temMin);
formData.append('temMax', temMax);
formData.append('correos', JSON.stringify(correos));
if (fileToUpload != null) {
formData.append('certificado', fileToUpload, fileToUpload.name);
}
const headers = new Headers({
'X-Requested-With': 'XMLHttpRequest'
});
return this.http.put(APPCONSTANTS.API_ENDPOINT + 'user/sensor/edit/' + id + '?token=' + this.authService.getToken(),
formData,
{headers: headers})
.map((response: Response) => {
return {
msg: response.json().msg
};
});
}
}
Laravel返回,因爲在控制器所需的字段的 「無法處理的實體」。
您需要使用Content-Type標頭,只有Laravel可以處理該類型的放置。 –
您可能還需要一個'Accept'標頭來告訴服務器你想要一個json結果。如果我們沒有該標題,我們發現Firefox有問題。 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept(雖然這不是當前的問題,請嘗試@Z.Bagley爲此提出的建議)。 – ps2goat