J'ai simple repos de données printemps mise en œuvre de la création d'utilisateur à l'aide Hibernate et MongoDB.création d'entrée renvoie un 201 mais y accéder retourne 404
User.java:
@Data
@Entity
@RequiredArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class User {
private @Id String username;
private String about;
}
UserRepository.java
@PreAuthorize("hasRole('ROLE_USER')")
@CrossOrigin(methods = {GET, PUT, POST})
public interface UserRepository extends MongoRepository<User, String> {
@Override
@PreAuthorize("hasRole('ROLE_ADMIN')")
<S extends User> S save(S s);
}
Ensuite, je fais un appel POST à /users
avec ce corps:
{
"username": "username1",
"about": "example"
}
Je reçois un 201 Created
réponse du corps suivant:
{
"about": "example",
"_links": {
"self": {
"href": "http://localhost:8080/api/users/username1"
},
"user": {
"href": "http://localhost:8080/api/users/username1"
}
}
}
Je fais une GET
demande /users
pour voir si l'utilisateur a en effet été ajouté et cette réponse est renvoyée à juste titre:
{
"_embedded": {
"users": [
{
"about": "example",
"_links": {
"self": {
"href": "http://localhost:8080/api/users/username1"
},
"user": {
"href": "http://localhost:8080/api/users/username1"
}
}
}
]
},
"_links": {
"self": {
"href": "http://localhost:8080/api/users{?page,size,sort}",
"templated": true
},
"profile": {
"href": "http://localhost:8080/api/profile/users"
}
},
"page": {
"size": 20,
"totalElements": 1,
"totalPages": 1,
"number": 0
}
}
LE PROBLÈME
Mais alors j'accède à l'URL de l'utilisateur fourni dans les liens, à savoir, http://localhost:8080/api/users/username1
mais j'obtiens une réponse 404 Not Found
.
Qu'est-ce que je fais mal? J'ai essayé de regarder des exemples et de la documentation mais rien ne semble faire le travail. Si j'ajoute l'annotation @AutoGenerated
cela fonctionne, mais je veux évidemment que le id
soit fourni par la requête en tant que username
.