2016-04-11 11 views
0

私はspring mvcを使用して、残りのWebサービスを作成します。しかし、私はいつも404を手に入れます。どこが間違っているのか分かりません。ここで春RESTは常に戻る404

は私のイニシャライザである:ここでは

public class Initializer extends AbstractAnnotationConfigDispatcherServletInitializer { 

@Override 
protected Class<?>[] getRootConfigClasses() { 
    // TODO Auto-generated method stub 
    return new Class<?>[] { RootConfig.class }; 
} 

@Override 
protected Class<?>[] getServletConfigClasses() { 
    // TODO Auto-generated method stub 
    return new Class<?>[] { WebConfig.class }; 
} 

@Override 
protected String[] getServletMappings() { 
    // TODO Auto-generated method stub 
     return new String[] { "/" }; 
    } 

} 

は私のWebConfigです:

@Configuration 
@EnableWebMvc 
@ComponentScan("com.jh.dummy.web") 
public class WebConfig extends WebMvcConfigurerAdapter { 
    @Bean 
    public ViewResolver viewResolver() { 
     InternalResourceViewResolver viewResovler = new InternalResourceViewResolver(); 
     viewResovler.setPrefix("/"); 
     viewResovler.setSuffix(".html"); 
     viewResovler.setExposeContextBeansAsAttributes(true); 
     return viewResovler; 
    } 

    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
     configurer.enable(); 
    } 

} 

ここに私の残りのサーバーファイルさ:

@RestController 
@RequestMapping("/v1/") 
public class PositionService { 
    @RequestMapping(value = "position", consumes = MediaType.APPLICATION_JSON_VALUE, method = POST) 
    public void create(List<Map<String, String>> data) { 
    } 

    @RequestMapping(value = "position/{id:\\d+}", produces = MediaType.APPLICATION_JSON_VALUE, method = GET) 
    public void getById(@PathVariable("id") Long id) { 
    } 

    @RequestMapping(value = "position/title/{title:.+}/{start:\\d{1,}}", produces = MediaType.APPLICATION_JSON_VALUE, method = GET) 
    public void getByTitle(@PathVariable("title") String title, 
      @PathVariable("start") int start) { 
    } 

@RequestMapping(value = "position/title/{title:.+}/address/{address:\\w{1,}}/{start:\\d{1,}}", produces = MediaType.APPLICATION_JSON_VALUE, method = GET) 
public void getByTitleAndLocation(@PathVariable("title") String title, 
     @PathVariable("address") String address, @PathVariable("start") int start) { 

    } 

    @RequestMapping(value = "position/address/{address:\\w{1,}}/{start:\\d{1,}}", produces = MediaType.APPLICATION_JSON_VALUE, method = GET) 
    public void getByLocation(@PathVariable("address") String address, 
      @PathVariable("start") int start) { 
    } 

    @RequestMapping(value = "position/company/{company:.{1,}}/{start:\\d{1,}}", produces = MediaType.APPLICATION_JSON_VALUE, method = GET) 
    public void getByCompany(@PathVariable("company") String company, 
       @PathVariable("start") int start) { 
     } 

    } 

ここでは、要求されます

enter image description here

私は、カールテストを使用すると、私はいつも404を取得します。どこがうまくいかないのはわかりません。何か案が?

+0

完全なHTTPリクエストを確認できますか?ヘッダーを含める? –

+0

@BoristheSpider HTTPリクエストは単純に「curl localhost:8080/v1/position/1」です。 –

+0

ヘッダーが必要です。なぜなら、あなたが[Accept'ヘッダー](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html)のために送るものを見る必要があるからです。 –

答えて

0

私はこの問題を解決します。それは/ダミー/ URLに追加する必要があることが判明。したがって、URLは "localhost:8080/dummy/v1/position/v1"になります。しかし、私の他のプロジェクトのケースでは、ダミーにプロジェクト名を追加する必要はありません。私は今なぜこのことをする必要があるのか​​分かりません。私はあなたが見つけたときにあなたの人の投稿を維持します。

+1

最後にそれを正しく取得する理由は、私は "/"にアプリケーションを設定することを忘れていたので、私はURLにプロジェクト名を追加する必要があります –