• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

nie jestem w stanie wykonać metody POST na localhost:8080

0 głosów
215 wizyt
pytanie zadane 10 kwietnia 2020 w Java przez erykvest Nowicjusz (120 p.)

Cześć!

Przy próbie wykonania metody POST na localhost:8080 (przy użyciu aplkacji postman) nic się nie dodaje, metoda GET działa normalnie. Załączam niżej części swojego kod,  jako osoby z dużo większym doświadczeniem pewnie szybciej znajdziecie błąd.

	public Topic(String id, String name, String description) {
		super();
		this.id = id;
		this.name = name;
		this.description = description;
	}
	@PostMapping(value = "/topics", consumes = "application/json", produces = "application/json")
	public void addTopic(@RequestBody Topic topic) {
		topicService.addTopic(topic);
	}
	public void addTopic(Topic topic) {
		topics.add(topic);
	}
	private List<Topic> topics = new ArrayList<>(Arrays.asList(
				new Topic("java", "Sdsadaspring FM", "desc")
				));

No i przykłądowy kod JSON, który próbuje dodać metodą POST

 {
    "id": "javdfdfdfda",
    "name": "Sdsadaspfdfdring FM",
    "description": "defdfsc"
 }

 

komentarz 10 kwietnia 2020 przez Tomek Sochacki Ekspert (228,960 p.)
dawno juz nie wystawiałem żadnych endpointow w Javie ale powiedz mi, masz jakieś błędy w logach? i czy, ale tutaj teraz strzelam bo pamięć może być zawodna, parametry dla @PostMapping nie powinny być tablicami?

@PostMapping(value = ["/topics"], consumes = ["application/json"], produces = ["application/json"]) ?
komentarz 10 kwietnia 2020 przez erykvest Nowicjusz (120 p.)

Nie wydaje mi się, że powinny być tablicami, nic takiego nie znalazłem jak robiłem research, a cały błąd jaki dostaje to:

{"timestamp":1586513204727,"status":400,"error":"Bad Request","exception":"org.springframework.http.converter.HttpMessageNotReadableException","message":"Could not read document: Can not construct instance of javabrains.topic.Topic: no suitable constructor found, can not deserialize from Object value (missing default constructor or creator, or perhaps need to add/enable type information?)\n at [Source: java.io.PushbackInputStream@3b09fc99; line: 1, column: 2]; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of javabrains.topic.Topic: no suitable constructor found, can not deserialize from Object value (missing default constructor or creator, or perhaps need to add/enable type information?)\n at [Source: java.io.PushbackInputStream@3b09fc99; line: 1, column: 2]","path":"/topics"}

 

2 odpowiedzi

+1 głos
odpowiedź 10 kwietnia 2020 przez Mariusz08 Maniak (62,320 p.)

metody POST na localhost:8080

 @PostMapping(value = "/topics"

Musisz odwoływać się na localhost:8080/topics, żeby dostać się do tego endpointu. 

komentarz 10 kwietnia 2020 przez erykvest Nowicjusz (120 p.)
@RequestMapping("/topics")
	public List<Topic> getAllTopics() {
		return topicService.getAllTopics();
	}

w metodzie GET odwołuje się bezpośrednio na /topics,

kiedy zmieniłem na localhost:8080/topics to oprócz metody POST, GET też przestało odpowiadać i wyświetliło błąd:

{
    "timestamp": 1586513030848,
    "status": 404,
    "error": "Not Found",
    "message": "No message available",
    "path": "/topics"
}

A to jest cały błąd jaki dostaje przy normalnej próbie POST na /topics

{"timestamp":1586513204727,"status":400,"error":"Bad Request","exception":"org.springframework.http.converter.HttpMessageNotReadableException","message":"Could not read document: Can not construct instance of javabrains.topic.Topic: no suitable constructor found, can not deserialize from Object value (missing default constructor or creator, or perhaps need to add/enable type information?)\n at [Source: java.io.PushbackInputStream@3b09fc99; line: 1, column: 2]; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of javabrains.topic.Topic: no suitable constructor found, can not deserialize from Object value (missing default constructor or creator, or perhaps need to add/enable type information?)\n at [Source: java.io.PushbackInputStream@3b09fc99; line: 1, column: 2]","path":"/topics"}

 

0 głosów
odpowiedź 14 kwietnia 2020 przez mbabane Szeryf (79,300 p.)

Czy klasa Topic ma gettery, settery i domyślny konstruktor (tj. nie przyjmujący żadnych parametrów)? Czytaj message jaki dostajesz:

"message":"Could not read document: 
Can not construct instance of javabrains.topic.Topic: 
no suitable constructor found, can not deserialize 
from Object value (missing default constructor or creator, 
or perhaps need to add/enable type information?)

Czy przy żądaniu HTTP POST ustawiasz Content-Type na application/json ?

Podobne pytania

0 głosów
0 odpowiedzi 722 wizyt
pytanie zadane 15 grudnia 2018 w Sieci komputerowe, internet przez KwasnyArbuz Nowicjusz (120 p.)
+1 głos
2 odpowiedzi 85 wizyt
pytanie zadane 17 czerwca 2021 w PHP przez Hubert Wajda Obywatel (1,440 p.)
0 głosów
0 odpowiedzi 191 wizyt
pytanie zadane 15 marca 2020 w Java przez Xarti Obywatel (1,380 p.)

88,664 zapytań

137,273 odpowiedzi

306,607 komentarzy

58,864 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...