Mit RepositoryRestResource annotation zu ändern, Rest-Endpunkt nicht funktioniert
Ich bin neu in den Frühling starten. Ich habe versucht, erstellen von RESTful-web-service, die auch Stecker in MongoDB.
Alles funktioniert sehr gut, da der guide erklärt, außer diesem.
package hello.requests;
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;
import hello.models.CustomerModel;
@RepositoryRestResource(collectionResourceRel = "people", path = "people")
public interface CustomerRepository extends MongoRepository<CustomerModel, String> {
List<CustomerModel> findByLastName(@Param("name") String name);
}
Hier bin ich versucht zu ändern, der Rest-Endpunkt für das repository vorgenommen werden, aus der Standard - /customerModels
zu /people
. Aber wenn ich diesen starte, bekomme ich 404 wenn ich versuche /people
aber funktioniert gut für /customerModels
.
Im weiteren Sinne wie funktioniert @RepositoryRestResource
Arbeit?
Was mache ich hier falsch?
- können Sie Ihre Konfigurationen?
- Können Sie das noch näher erläutern? Dies ist mehr oder weniger basierend auf dieser Spring guide. Frühling.io/guides/gs/auf-mongodb-Daten-rest
- haben Sie den mongodb-collection "die Leute"? Btw, können Sie Ihre Protokolle zu, wenn-ohne Ausnahme-Wann bekam 404.
- Es gibt keine MongoDB collection "Menschen". Die Sammlung ist gespeichert als "CustomerModels". collectionResourceRel = "Volk", Pfad = "Volk" wird verwendet, um den alias der Endpunkt von /customerModels zu /Menschen. Zitat aus dem guide. ` @RepositoryRestResource ist nicht erforderlich für das repository exportiert werden. Es wird nur verwendet, um ändern Sie die export-details, wie die Verwendung von /Menschen, anstatt den Standardwert /Personen.`
- ok, haben Sie versucht, wie dieses
collectionResourceRel = "CustomerModels", path = "people"
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht verwenden, Schrägstrich innerhalb der
path
- Attribut, aber Sie können festlegen, base Pfad in - Anwendung.Eigenschaften:Ohne zu sehen, die gesamte Konfiguration ist es schwer, genau zu wissen, was Los ist in Ihrer situation. Jedoch mit der neuesten guide bei https://github.com/spring-guides/gs-accessing-data-mongodb.git ich bin in der Lage, um es arbeiten, indem Sie die folgenden änderungen:
Hinzufügen spring-boot-starter-data-rest als dependency in der POM-Datei.
Hinzufügen dieser Annotationen zu den CustomerRepository-Klasse.
Einrichten Getter und setter in die Klasse "Customer" für die 2 Namen Felder im Konstruktor zu vermeiden Jackson Serialisierung Fehler.
Verwenden, wenn ich die Anwendung ausführen, ich bin in der Lage, Zugriff auf das repository zu http://localhost:8080/people. Wenn ich entfernen Sie die annotation dann die CustomerRepository ist der Zugriff auf http://localhost:8080/customers. Lassen Sie mich wissen, wenn Sie wollen, dass ich post ein fork auf GitHub.
Ihre Frage zu beantworten über das, was RepositoryRestResource ist, dass es überschreibt die Attribute für die ResourceMapping, die standardmäßig erstellt wird. Es sind Attribute, die beim erstellen der Zuordnung und ändern Sie die zugehörigen Rückgabewerte der Methoden auf die mapping-Klasse. Standardmäßig Spring Data Rest schafft Vorgaben auf Basis der Klassennamen der verwendeten Objekte im repository-definition.
/customerModels
Standard generiert wird, da Ihre Standard-Methode gibt eine Liste vonCustomerModel
. So können Sie versuchen, fügen Sie diese@RestResource(path = "names")
Ihrer Methode und wie:http://localhost:8080/yourapp/people/search/names
. Schau mal hier: Spring data docs