私はMongoRepositoryをSpringブートデータレストに使用しています。しかし、私は新しく作成されたオブジェクトに "Register Date"を入れたいのですが、デフォルトの実装はそれをサポートしていません。私はすべての新しいオブジェクトに余分なフィールドを配置する独自のカスタムコントローラを実装する必要があります。問題は、私自身のコントローラーを実装するときにHATEOASが機能しなくなることです。SpringブートデータREST、HATEOASがカスタムコントローラと連携していません
リポジトリクラス:
@RepositoryRestResource(collectionResourceRel = "users", path = "users")
public interface UserRepository extends MongoRepository<User, String> {
}
コントローラクラス:このカスタムコントローラと
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
UserRepository repository;
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<List<User>> getAll() {
List<User> list = repository.findAll();
return new ResponseEntity<>(list, HttpStatus.OK);
}
ペイロードは次のようになります。私のカスタムコントローラなし
[
{
"id": "571de80ebdabf25dd6cdfb73",
"username": "mark",
"password": "mark123",
"email": "[email protected]",
"createdAt": "2016-04-25 11:49"
},
{
...
ペイロードは次のようになります。
{
"_embedded": {
"users": [
{
"username": "mark",
"password": "mark123",
"email": "[email protected]",
"createdAt": "2016-04-25 11:49",
"_links": {
"self": {
"href": "http://localhost:8080/users/571de80ebdabf25dd6cdfb73"
},
"user": {
"href": "http://localhost:8080/users/571de80ebdabf25dd6cdfb73"
}
}
},
{
.....
@RestController
の代わりに@RepositoryRestController
を使用しようとしましたが、役に立たなかった。独自のカスタムコントローラを実装せずに、新しく作成されたオブジェクトに「登録日」を入れる別の方法があるのだろうか?もしそうでなければ、私は何をしてHATEOASを再び働かせることができますか?
あなたは同じパスコントローラとリポジトリレストソース広告を与えます。あなたのカスタムコントローラでは特別なパスを追加するだけです。例getAll()mを置き換えますこの@RequestMapping(method = RequestMethod.GET、value = "/ getall")でエソードリクエストマッピングを行い、 –
@kakashihatakeの提案に感謝していますが、動作していません。結果は以前と同じです。 – oxyt
このパス/ people/getallでリクエストを試しましたか? –