SpringMVCに基づくRESTサービスがあります。
これは私のコードです:
public class SitesController {
@RequestMapping(value="/rest/sites/{id}", method=RequestMethod.GET)
@ResponseBody
public SiteDTO getSite(@PathVariable String id) {
Integer siteId = Integer.parseInt(id);
Site site = cms.getSite(siteId);
SiteDTO siteResult = new SiteDTO(site);
return siteResult;
}
@RequestMapping(value="/rest/sites", method=RequestMethod.GET)
public SitesResult getSites(@RequestParam Integer companyId) {
Collection<Site> sites = cms.getSites(cms.getCompany(companyId));
SitesResult sitesResult = new SitesResult(sites);
return sitesResult;
}
}
(問題に当てはまらないコードをスキップしました)
URLにアクセス/rest/sites/1
すると、期待するデータが返されますが、アクセスすると/rest/sites?companyId=1
404ページが表示されますHTTP Status 404 - /rest/rest/sites
。
ログには、関数内のコードgetSites
が実行されていることが示されていますが、その後、ログには次のように表示されます。org.springframework.web.servlet.view.JstlView Forwarding to resource [rest/sites] in InternalResourceView 'rest/sites'
実行されるのではなくリダイレクトされるのはなぜですか?
アップデート
問題が見つかりました。上記の方法がなかったため@ResponseBody
、コーディネーターがリクエストを転送しました。ここでの詳細情報、重要なことはIf the method is annotated with @ResponseBody, the return type is written to the response HTTP body. The return value will be converted to the declared method argument type using HttpMessageConverters.