首页 > 解决方案 > HttpErrorResponse 和 Spring 错误请求:缺少所需的请求正文

问题描述

我遇到了一个错误的请求。

服务器端错误:

Required request body is missing error

客户端错误:

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

我已经使用内置的 swagger 组件测试了 API,并且得到了 201 响应,其中包含正在创建的正确对象和预期的响应。我有一种感觉,这是我的某个地方的疏忽,但我已经查看这段代码几个小时了,似乎无法找到断开连接的地方。任何帮助将不胜感激。

接口:

    @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;
}

角度风险模型

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>

创造风险 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);
}

}

风险服务 TS

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'});
}

}

标签: javascriptjavaangularhttpspring-mvc

解决方案


推荐阅读