2017-06-10 164 views
1

我剛開始學習Java Spring Boot以進行REST API開發。用下面的代碼,GET方法工作正常,但POST不。Springboot請求方法'POST'不受支持

@RestController 
@RequestMapping("/api/users") 
public class UsersController { 

    @Autowired 
    private UserRepository userRepository; 

    @RequestMapping(method = RequestMethod.GET) 
    public List<User> getAll() { 
     return userRepository.findAll(); 
    } 

    @RequestMapping(method = RequestMethod.POST) 
    public String saveUser() { 
     return "Saved"; 
    } 

} 
使用 Content-Typeapplication/json

錯誤郵差應用

測試POST方法,

{ 
    "timestamp": 1497116929266, 
    "status": 405, 
    "error": "Method Not Allowed", 
    "exception": "org.springframework.web.HttpRequestMethodNotSupportedException", 
    "message": "Request method 'POST' not supported", 
    "path": "/api/users/" 
} 

在日誌中我可以看到,

s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/users],methods=[POST]}" onto public java.lang.String com.betasquirrel.controller.UsersController.saveUser() 
s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/users],methods=[GET]}" onto public java.util.List<com.betasquirrel.model.User> com.betasquirrel.controller.UsersController.getAll() 
s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest) 
s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) 
o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 
o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 
o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 

Java和springboot版本的Maven ,

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.5.4.RELEASE</version> 
    <relativePath/> 
</parent> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
    <java.version>1.8</java.version> 
</properties> 
+0

你的錯誤顯示json的字段'path'和值'/ api/users /'。也許這在路徑的盡頭很重要? – berserkk

+0

@berserkk嘗試訪問'api/users'它說'404',''api/users /'說'405' – devo

+0

發佈您切斷的整個日誌消息。 – chrylis

回答

0

最後,通過使用maven命令運行項目來解決問題。

而不是使用IDE的運行按鈕,運行項目,只是去了IDE終端並執行命令

mvn spring-boot:run 

由於它是一個REST實現,現在我可以訪問這些,

GET /api/users/ or /api/users 
POST /api/users/ or /api/users 

像魅力一樣工作!

+0

聽起來像你正在運行代碼的過時副本。 – chrylis

+0

@chrylis不,我確定這是IDE運行的問題(IntelliJ Idea)。許多次使用運行按鈕執行代碼,但沒有奏效。使用maven命令運行後完美工作。 – devo

+0

並且在使用Maven運行之後,它是否開始在IDE中工作? – chrylis

相關問題