Я создал REST API в Spring Bboot и клиентское приложение в Angular 4. Я запускаю оба приложения локально. Когда я тестирую метод POST из postman, он работает хорошо, однако, когда я делаю запрос POST из приложения Angular 4, он приводит к 400 Bad request. REST API отображает следующую ошибку на консоли как
Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing
У REST API есть метод POST, как показано ниже:
@CrossOrigin(origins = "*")
@RequestMapping(value = "/api/newcustomer", method=RequestMethod.POST, consumes= "application/json")
public Customer addCustomer(@RequestBody Customer customer){
System.out.println("***********"+customer.getFirstName());
return customer;
}
Сервис Angular
@Injectable()
export class PostdataService {
constructor(private _http : Http) {}
postContactFormData(firstName, lastName, accounts, phoneNumber){
var body : {firstName , lastName, accounts, phoneNumber};
var headers = new Headers({ 'Content-Type': 'application/json' });
return this._http.post('http://localhost:8080/api/newcustomer/', JSON.stringify(body),{
headers : headers
}).subscribe(
() =>{},
err => console.error(err)
);
}
}
Класс Customer
public class Customer {
private String firstName;
private String lastName;
private String phoneNumber;
private List<Account> accounts;
public Customer(){
}





Запустите тело запроса через линтер, например jsonlint.com.
Запрос, который вы пытаетесь преобразовать в строку, недействителен json
{firstName , lastName, accounts, phoneNumber} должен быть примерно таким:
{"firstName": "firstName", "lastName": "lastName", "accounts": [1, 2, 3], "phoneNumber": 1.800.123.4567}
Спасибо, Андрей. Я понял. Я создал объект Customer, а затем передал его JSON.stringify (customer); Теперь представление json верное.