2017-10-21 12 views
0

を返します。エントリ作成は、201を返しますがアクセスし、それは私が<strong>休止</strong>と<strong>MongoDBの</strong>を使用してユーザ作成の単純<strong>春データレスト</strong>実装を持つ404

User.java:私が得る

{ 
    "username": "username1", 
    "about": "example" 
} 

@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); 
} 

は、その後、私はこの体で/usersへのPOST呼び出しを行いますa 0以下の身体と応答:問題

{ 
    "_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 
    } 
} 

{ 
    "about": "example", 
    "_links": { 
     "self": { 
      "href": "http://localhost:8080/api/users/username1" 
     }, 
     "user": { 
      "href": "http://localhost:8080/api/users/username1" 
     } 
    } 
} 

は、私は、ユーザーが実際に添加し、この応答は、当然のように返されるかどうかを確認するために/usersGET要求を行います

しかし、リンクで提供されているユーザーのURL、つまりhttp://localhost:8080/api/users/username1にアクセスしましたが、回答は404 Not Foundになります。

私は間違っていますか?私は例とドキュメントを調べてみましたが、何もしないようです。 @AutoGenerated注釈を追加すると機能しますが、usernameとして要求によってidが提供されることは明らかです。 User.java

答えて

0

、私はこれにusernameの宣言を変更:

@Id 
@JsonProperty("username") 
@NotBlank 
private String id; 

MongoDBは、それ以外の場合は、インデックス付き得ることはありませんデフォルトでは、すべての文書の主キーとして_id必要です。フィールド名をidに変更して、@Idアノテーション付きMongoDBの_idに変換する必要がありました。これを消費者側で修正するために、私は@JsonProperty("username")を使用して、要求のJSON本体のusernameプロパティから値を取得しました。

関連する問題

 関連する問題