Ich habe Probleme mit @RestController beim Versuch, etwas in meiner DB zu veröffentlichen. Mein Ziel ist es, zu versuchen, ein Ergebnis zu erhalten, die wie folgt aussieht:Verwendung der Federhalteregler
{
"postID": "5",
"content": "testcontent",
"time": "13.00",
"gender": "Man"
}
während Posting etwas wie dies in "localhost: port/posts" (mit Postman):
{
"content": "testcontent",
"time": "13.00",
"gender": "Man"
}
Post.java
package bananabackend;
public class Post {
private final long id;
private String content;
private String time;
private String gender;
// Constructor
public Post(long id, String content, String time, String gender) {
this.id = id;
this.content = content;
this.time = time;
this.gender = gender;
}
// Getters
public String getContent() {
return content;
}
public long getId() {
return id;
}
public String getTime() {
return time;
}
public String getGender() {
return gender;
}
PostController.java
package bananabackend;
import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import bananabackend.Post;
@RestController
public class PostController {
private final AtomicLong counter = new AtomicLong();
@RequestMapping(value="/posts", method = RequestMethod.POST)
public Post postInsert(@RequestParam String content, @RequestParam String time, @RequestParam String gender) {
return new Post(counter.incrementAndGet(), content, time, gender);
}
}
PostRepository.java
package bananabackend;
import java.util.List;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
@RepositoryRestResource(collectionResourceRel = "posts", path = "posts")
public interface PostRepository extends MongoRepository<Post, String> {
List<Post> findPostByContent(@Param("content") String content);
}
ich diesen Fehler:
{
"timestamp": 1460717792270,
"status": 400,
"error": "Bad Request",
"exception":
"org.springframework.web.bind.MissingServletRequestParameterException",
"message": "Required String parameter 'content' is not present",
"path": "/posts"
}
Ich möchte jedem Beitrag eine ID festgelegt gemacht, aber es scheint nicht zu funktionieren. Ich habe versucht, meinen Code ähnlich wie diese Anleitung zu bauen:
https://spring.io/guides/gs/rest-service/
Nun, Sie spezifizieren mehrere RequestParams und senden keine. Sie sollten alles in ein Objekt einfügen und stattdessen '@RequestBody NewObj obj' auf Ihrem Controller verwenden. – dambros