I am complete noob in Spring Boot, but I tried to create a Back-end server. I coded all the work that must be done in the background and it is working perfectly. This is the "RequestsController" class:
@AllArgsConstructor
@RestController
@RequestMapping(path = {"/api"})
public class RequestsController {
private final HashMap<String, HashMap<String,String>> DatasetMaps = ProcessingApplication.DatasetMaps;
@GetMapping(path = {"Check"})
public String Check(@RequestBody CheckModel checkModel){
System.out.println("aici");
GetCheck getCheck = new GetCheck(this.DatasetMaps);
return getCheck.GetCheckDatasetMethod(checkModel.checking);
}
@GetMapping(path = {"Search"})
public HashMap<String,HashMap<String,HashMap<String,HashMap<Double,Double>>>> Search(@RequestBody SearchModel search){
MainSearch mainSearch = new MainSearch(search.userinfo,search.words);
return mainSearch.SearchInVideous();
}
}
And this is the "SearchModel" class:
public class SearchModel {
protected final List<String> userinfo;
protected final ArrayList<String> words;
public SearchModel(List<String> userinfo,
ArrayList<String> words){
this.userinfo = userinfo;
this.words = words;
}
}
This is the security class:
@Configuration
@AllArgsConstructor
@EnableWebSecurity
public class ServerSecurity{
@Bean
public SecurityFilterChain defaultSecurityFilterChain(HttpSecurity httpSecurity) throws Exception{
httpSecurity
.csrf()
.disable()
.authorizeHttpRequests()
.requestMatchers("/api/**","/api/Check")
.permitAll()
.anyRequest()
.authenticated()
.and()
.formLogin();
httpSecurity.httpBasic();
return httpSecurity.build();
}
@Bean
public AuthenticationManager authenticationManager(AuthenticationConfiguration authenticationConfiguration) throws Exception {
return authenticationConfiguration.getAuthenticationManager();
}
}
Moreover, I did the first test and is working as you can see in the following image:
In this image I used "Postman" in order to send a "Get" requests and using the second "GetMapping" from the "RequestsController" class as you can see. This requests is working perfectly.
My problem is when I try to use the First "GetMapping" from "RequestsController", as you can see in the following image:
This is "CheckModel" class:
public class CheckModel {
protected final String[] checking;
public CheckModel(String[] checking){
this.checking = checking;
}
}
Unfortunately, the error is too log, but I will put just a part of it and if you want I can put the entire error. This is the error:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.FinalYearProjectServer.GetAndPostHandler.CheckModel` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 2, column: 5]
at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:67) ~[jackson-databind-2.14.2.jar:2.14.2]
at com.fasterxml.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1909) ~[jackson-databind-2.14.2.jar:2.14.2]
at com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:408) ~[jackson-databind-2.14.2.jar:2.14.2]
at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1354) ~[jackson-databind-2.14.2.jar:2.14.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1420) ~[jackson-databind-2.14.2.jar:2.14.2]
I really do not know what to do in this situation.