私はSpringブート1.3.1.RELEASEを使用しており、カスタムリポジトリ+コントローラを作成しようとしています。私はbasePathを/ apiに設定し、カスタムコントローラのURIを自動的にbasePathに関連付ける方法を理解することはできません。私は行方不明の魔法の一部ですか?設定済みのベースパスのスプリングデータRESTコントローラ
ここにコントローラがあります。私は以下の属性のすべての組み合わせも試しました。あなたが私が何を試したかを見ることができるようにコメントされたものに残しました。
@RepositoryRestController
// @Controller
@ExposesResourceFor(AnalystSummaryModel.class)
// @RequestMapping("/analystsummaries")
public class AnalystSummaryController {
@Autowired
AnalystSummaryRepository repository;
@Autowired
private AnalystSummaryResourceAssembler resourceAssembler;
@ResponseBody
@RequestMapping(method = RequestMethod.GET, produces = {MediaType.APPLICATION_JSON_VALUE})
public PagedResources<AnalystSummaryModel> getAnalystSummaries(
final Pageable pageable,
final PagedResourcesAssembler assembler) {
final Page<AnalystSummaryModel> analystSummaries = repository.findAll(pageable);
return assembler.toResource(analystSummaries, resourceAssembler);
}
}
さらに、別のquestionに基づいてResourceProcessorを作成します。
私は/ APIエンドポイントを表示すると、私は以下を参照してください。
{
"_links" : {
"self" : {
"href" : "http://localhost:8080"
},
"profile" : {
"href" : "http://localhost:8080/api/profile"
}
}
}
私は@RequestMappingのコメントを解除すると、私はその後、取得:
{
"_links" : {
"self" : {
"href" : "http://localhost:8080/analystsummaries"
},
"profile" : {
"href" : "http://localhost:8080/api/profile"
}
}
}
私はマッピングを持って何をしないのです私はapplication.ymlで次のように設定したbasePathを基準にしていますか?
spring.data.rest.baseパス:/ API
いくつかのより多くの情報:
@BasePathAwareを使用するには、実際にはこのコントローラサービスに二つの異なるURIを結果!これは、/ api/analystSummaries(自動複数化などのため)に/と同様に表示されます。次に、ControllerLinkBuilderを使用する場合は、最初のパスを使用します。だから私の更新された質問は:なぜこれは2回公開されていますか? @RequestMappingがないので暗黙ルートを削除して/ apiの下にあるものを保持するにはどうすればよいですか?
で私の答えを参照してください。私はまだルートにページを反応させるのに役立つしたいです。これはサーバーが/ apiまたはその下のものだけを聞くようにしませんか? –
'api'はすべてのURLのプレフィックスになります。あなたが質問に反応uiを言及していない –
ありがとう、あなたのアプローチはここで動作しませんでした。私は実際には/ apiの下にあるSDRコントローラが必要です。 SDRのドキュメントによると、これはうまくいくはずです。 オリジナルの質問に追加した@BasePathAwareを使用すると、他にもいくつかの発見があります –