У меня есть фронтенд реакции и бэкэнд весны.У меня есть служба отдыха для бэкэнда, который принимает sumrizerData в качестве входных данных и возвращает так же, как выходной.У меня есть форма, которая принимает кнопку ввода и отправки текстовой области.При отправке почтового запроса через axios я получаю пустой объект.Я проверил API через почтальон, но при отправке через Axios, я получаю внутреннюю ошибку 500.
Я включил CORS в RestController.
Пожалуйста, дайте мне знать, в чем проблемаSummarizerData Pojo
@Entity(name = "user_text_data")
@Getter
@Setter
@ToString
public class SummarizerData {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column
private String paragraph;
@Column
private LocalDateTime creationDate;
@Transient
private List<Sentence> summarizedSentences;
public SummarizerData(){
}
public SummarizerData(String paragraph){
this.paragraph = paragraph;
this.creationDate = LocalDateTime.now();
}
}
TextSummarizerController
@RepositoryRestController
@RequestMapping("/api")
public class TextSummarizerController{
@Autowired
SummarizerDataRepository repository;
Logger logger = Logger.getLogger(TextSummarizerController.class.getName());
@CrossOrigin
@RequestMapping(method = RequestMethod.POST, value = "/summarize")
public @ResponseBody SummarizerData getSummarizerData(@RequestBody SummarizerData data ){
System.out.println("Returning Summarized Data");
SummaryTool summaryTool = new SummaryTool();
logger.info(data.toString());
repository.save(data);
data.setSummarizedSentences(summaryTool.startSummarization(data.getParagraph()));
return data;
}
}
React FrontEnd
import React, { Component } from 'react';
import './App.css';
import 'bootstrap/dist/css/bootstrap.min.css';
import Navbar from './components/Navbar';
import ParagraphEntry from './components/ParagraphEntry';
import {BrowserRouter as Router, Route} from 'react-router-dom';
import axios from 'axios';
class App extends Component {
constructor(props){
super(props);
this.state = {
"summarizerData" : {},
"paragraph" : ""
} ;
}
onChange = (e) => {
this.setState({"paragraph" : e.target.value});
};
onSubmit= (e) => {
e.preventDefault();
var headers = {
'Content-Type': 'application/json'
}
const summarizerData = {
"paragraph" : this.state.paragraph,
"creationDate" : "2019-03-10T00:58:23",
"summarizedSentences" :null
};
axios.post('http://localhost:8080/api/summarize',{summarizerData}, {headers})
.then(res => console.log(res.data))
console.log(summarizerData);
}
handleClear = (e) => {
console.log(e);
e.target.value = "";
this.setState({"paragraph" : ""});
}
render() {
return (
<div className="App">
<Navbar />
<ParagraphEntry onChange = {this.onChange} onSubmit={this.onSubmit} handleClear = {this.handleClear} paragraph = {this.state.paragraph}/>
</div>
);
}
}
export default App;
Журналы ошибок
Returning Summarized Data
2019-03-18 00:10:19.487 INFO 8336 --- [nio-8080-exec-5] c.n.t.s.rest.TextSummarizerController : SummarizerData(id=null, paragraph=null, creationDate=null, summarizedSentences=null)
2019-03-18 00:10:19.491 WARN 8336 --- [nio-8080-exec-5] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1048, SQLState: 23000
2019-03-18 00:10:19.491 ERROR 8336 --- [nio-8080-exec-5] o.h.engine.jdbc.spi.SqlExceptionHelper : Column 'creation_date' cannot be null
2019-03-18 00:10:19.495 ERROR 8336 --- [nio-8080-exec-5] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement] with root cause
java.sql.SQLIntegrityConstraintViolationException: Column 'creation_date' cannot be null
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:117) ~[mysql-connector-java-8.0.15.jar:8.0.15]
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.15.jar:8.0.15]
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-java-8.0.15.jar:8.0.15]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:970) ~[mysql-connector-java-8.0.15.jar:8.0.15]
Основной момент в приведенном выше является SummarizerDataсо всеми полями как ноль.
Я новичок в реакции, поэтому, пожалуйста, дайте мне знать о любых ошибках.
Спасибо