我在 SpringBoot 中创建了 REST API 应用程序,该应用程序具有指向相同 URL 的方法GET
。POST
我已经创建了 springboot 应用程序并部署在本地机器的 docker 容器中。当我尝试访问此应用程序时,我能够同时获得GET
和POST
方法的响应。我已将相同的应用程序部署到 Pivotal Web Services (Pivotal Cloud Foundry) 中。当我尝试访问GET
PWS 中的方法时,它工作正常,但是当我尝试访问POST
方法时,我收到错误。
`"error": "Method Not Allowed",
"message": "Request method 'POST' not supported",`
如果我查看 PWS 日志中的错误,我可以看到以下内容。
.w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported]
我试图更改 springboot 代码以在方法中包含不同的选项,但它们似乎都不适用于 PWS。
我想看到POST 方法的200 OK。
@RestController
@RequestMapping("/skus")
public class SKUController {
private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();
//==============================================================
@Autowired
SKUService skuService; //Service which will do all data retrieval/manipulation work
// -------------------Retrieve All SKUS---------------------------------------------
@RequestMapping(value = "/", method = RequestMethod.GET)
public ResponseEntity<List<SKU>> listAllSKUS() {
List<SKU> skus = skuService.listAllSKUS();
if (skus.isEmpty()) {
return new ResponseEntity(HttpStatus.NO_CONTENT);
// You many decide to return HttpStatus.NOT_FOUND
}
return new ResponseEntity<List<SKU>>(skus, HttpStatus.OK);
}
@RequestMapping(value = "/", method = RequestMethod.POST)
public ResponseEntity<?> addSKU(@RequestBody SKU sku) {
try {
skuService.addSKU(sku);
return new ResponseEntity<SKU>(sku, HttpStatus.OK);
}catch(Exception e) {
return new ResponseEntity("SKU cannot be created", HttpStatus.BAD_REQUEST);
}
}
}
````