HttpErrorResponse и Spring Bad Request: отсутствует требуемый текст запроса

Я столкнулся с неверным запросом.

Ошибка на стороне сервера:

Required request body is missing error

Ошибка на стороне клиента:

HttpErrorResponse {headers: HttpHeaders, status: 400, statusText: "Bad Request",
                   url: "http://localhost:9000/api/create-risk", ok: false, …}

Я протестировал API со своим встроенным компонентом swagger и получил ответ 201 с созданным надлежащим объектом и ожидаемым ответом. У меня есть ощущение, что это где-то с моей стороны недосмотр, но я уже часами смотрю на этот код и, похоже, не могу найти отключение. Любая помощь будет принята с благодарностью.

API:

    @PostMapping(value = "/create-risk", produces = 
    MediaType.APPLICATION_JSON_VALUE)
    public Risk createRisk(
    @RequestBody Risk risk
) {
    log.debug("REST request to save Risk : {}", risk);
    Risk createdRisk = new Risk();
    createdRisk.setPocFirstName(risk.getPocFirstName());
    riskManagementRepository.save(createdRisk);
    return createdRisk;
}

Angular RiskModel

export interface IRiskModel {
id?: any;
login?: string;
firstName?: string;
lastName?: string;
email?: string;
activated?: boolean;
langKey?: string;
authorities?: any[];
createdBy?: string;
createdDate?: Date;
lastModifiedBy?: string;
lastModifiedDate?: Date;
password?: string;

}

export class RiskModel implements IRiskModel {
constructor(
    public id?: any,
    public firstName?: string,
) {
    this.id = id ? id : null;
    this.firstName = firstName ? firstName : null;
}

}

Компонент риска HTML

<div class = "jumbotron">
<div class = "container">
    <div class = "row">
        <div class = "col-md-6 offset-md-3">
            <form name = "form">
                <div class = "form-group">
                    <input type = "text" [(ngModel)] = "risk.firstName" placeholder = "First Name" name = "firstName" class = "form-control" id = "firstName">
                </div>
                <div>
                    <button (click) = "saveRisk()" class = "btn btn-success">Save</button>
                </div>
            </form>
        </div>
    </div>
</div>

Create-Risk TS

import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import {RiskModel,RiskManagementService} from 'app/core';


@Component({
selector: 'jhi-create-risk',
templateUrl: './create_risk.component.html',
styleUrls: ['create_risk.scss']
})
export class CreateRiskComponent implements OnInit {
risk: RiskModel;
inProduction: boolean;
swaggerEnabled: boolean;

constructor(
    private riskManagementService: RiskManagementService,
    private route: ActivatedRoute) {}

ngOnInit() {
    this.route.data.subscribe(({ risk }) => {
        this.risk = risk.body ? risk.body : risk});
};

saveRisk() {
    this.riskManagementService.createRisk(this.risk).subscribe(response 
=> response);
}

}

Служба рисков ТС

import { Injectable } from '@angular/core';
import { HttpClient, HttpResponse } from '@angular/common/http';
import { Observable } from 'rxjs';
import { SERVER_API_URL } from 'app/app.constants';
import {IRiskModel} from 'src/main/webapp/app/core';

@Injectable({ providedIn: 'root' })
export class RiskManagementService {
public resourceUrl = SERVER_API_URL + 'api/create-risk';

constructor(private http: HttpClient) {}

createRisk(risk: IRiskModel): Observable<HttpResponse<IRiskModel>> {
    return this.http.post<IRiskModel>(this.resourceUrl, risk, {observe: 
    'response'});
}

}

в контроллере Java вы создаете новый риск, устанавливаете атрибут, а затем сохраняете его. Почему бы вам не сохранить тот, который вы получили от оставшегося звонка?

aurelius 17.12.2018 10:04

Я удалил экземпляр newRisk и вместо этого вызвал get / set для объекта Risk @ResponseBody и вернул его ... все та же ошибка Bad Request и 400 на стороне сервера / клиента.

MB1337 17.12.2018 12:57

плохой запрос означает, что модель пользовательского интерфейса не один к одному с бэкэндом, поля не отображаются должным образом или проверки на бэкэнде не выполняются

aurelius 17.12.2018 17:23
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
484
0

Другие вопросы по теме