#angular #get #httpclient #patch
Вопрос:
Я получаю ошибку «PATCH <myurl(id)> 400» для моей функции исправления, я хочу изменить 1 единственную переменную в своей таблице, я действительно не знаю, что я делаю неправильно, так как я впервые использую запрос на исправление
Я больше изучил ошибку и получил такой ответ
PATCH myurl(id) 400
ERROR SyntaxError: Unexpected token u in JSON at position 0
at JSON.parse (<anonymous>)
at SafeSubscriber._error (absense.component.ts:74)
at SafeSubscriber.__tryOrUnsub (Subscriber.js:183)
at SafeSubscriber.error (Subscriber.js:135)
at Subscriber._error (Subscriber.js:75)
at Subscriber.error (Subscriber.js:55)
at CatchSubscriber.notifyError (OuterSubscriber.js:7)
at InnerSubscriber._error (InnerSubscriber.js:14)
at InnerSubscriber.error (Subscriber.js:55)
at Observable._Observable__WEBPACK_IMPORTED_MODULE_0__.Observable.scheduler.schedule.error.error [as _subscribe] (throwError.js:4)
Это класс absence.ts, я не добавил 2 переменные из своего класса json, потому что они выглядели так «@odata.context» и «@odata.etag», и я не знал, как их реализовать в своем классе
export class absence {
dc_docjustificatif_url : string;
statecode :string
dc_absenceid: string;
dc_document_name: string;
dc_startdate : string ;
statuscode :string ;
dc_teacher1 :string ;
dc_docjustificatif :string
dc_status :string ;
createdon : string ;
dc_justification :string ;
_ownerid_value : string ;
modifiedon : string ;
_dc_classes_value : string ;
versionnumber :string ;
_dc_teacher_value : string ;
_dc_student2_value : string ;
dc_class1 : string ;
timezoneruleversionnumber :string ;
dc_enddate : string ;
_modifiedby_value : string ;
dc_docjustificatif_timestamp :string ;
dc_student : string ;
dc_docjustificatifid : string ;
dc_acceptance :string ;
_createdby_value : string ;
_owningbusinessunit_value : string ;
_owninguser_value : string ;
overriddencreatedon :string ;
dc_document :string ;
importsequencenumber : string ;
_modifiedonbehalfby_value : string ;
_dc_class_value : string ;
utcconversiontimezonecode : string ;
_createdonbehalfby_value : string ;
dc_name : string ;
dc_description : string ;
_owningteam_value : string}
это мое отсутствие.service.ts
getAbsence() {
return this.http.get<any>(this.url).pipe(map(data => data.value))
}
upload(absence: absence,id) {
const headers = { 'Accept': '*/*', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'POST, GET, OPTIONS, HEAD','Content-Type': 'application/json',
'Access-Control-Allow-Headers': 'X-Requested-With,content-type' }
return this.http.patch<any>(`${this.url}(${id})`, absence, {
headers
}
)
}
this is my absence.component.ts
absences: [];
ngOnInit(): void {
this.absenceService.getAbsence()
.subscribe(
res => this.absences = res,
)
}
upload(id){
this.absenceService.upload(id).subscribe(
res => {
console.log(res)
},
err => {
console.log(err);
}
);
}
это мое absence.component.html и форму, которую я хочу обновить
<div class="card" *ngFor="let absence of absences">
<div >
<div class="card-header" id="headingOne" >
<div class="row ">
<!--Execution-->
<form #absenceform="ngForm" (ngSubmit)="uploadFile(absenceform,absence.dc_absenceid)" enctype="multipart/form-data" >
<div class="col-1"> 1</div>
<div class="col-3 ">
<div class="custom-file">
<input type="text"
class="form-control"
id="description"
[(ngModel)]="absence.dc_name"
name="documentname">
</div>
</div>
<div class="col-3 ">
<button type="submit" >upload</button>
</div>
</form>
<!--Execution-->
</div>
</div>
</div>
</div>```
this is the first time I'm using the patch http request can anyone please tell me what i'm doing wrong?
Комментарии:
1. Я просто отредактировал свой код для лучшего понимания, если кто-нибудь может помочь, я буду очень благодарен
2. Более подробная информация о структуре интерфейса/класса «отсутствие» в вашем приложении и классе DTO, используемом для метода HTTP-исправления в вашем API. Любая разница в этих классах может привести к этой ошибке.
3. у меня есть 2 переменные, которые я не рассекретил, они выглядят так «@odata.context». есть идеи, как я могу объявить их в классе отсутствия?
4. Я отредактировал свой пост и добавил ошибку, которую получаю
5. Я бы предложил протестировать вызов API с помощью утилиты, такой как POSTMAN, чтобы вы могли отследить, существует ли проблема только на стороне сервера или проблема заключается в несовместимости между HTTP-запросом клиента и методом API на стороне сервера. Оттуда вы можете получить глубокое понимание того, где возникает проблема.