簡體   English   中英

PostMapping Service Rest with Spring boot error 不支持請求方法“POST”

[英]PostMapping Service Rest with Spring boot error Request method 'POST' not supported

我沒有確定問題所在。

控制器

@RestController("/api")
public class CoordenadaController {

    @Autowired private RepositorioCoordenada repositorioCoordenada;

    @PostMapping("/salvar")
    public void save(String nome, int coordenadaX, int coordenadaY) {
        this.repositorioCoordenada.save(new Coordenada(nome, coordenadaX, coordenadaY));
        System.out.println("Salvou.....");
    }
}

郵差客戶端

url localhost:8080/api/salvar?nome=Igreja&coordenadaX=10&coordenadaY=20

記錄錯誤 PostMan 客戶端

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

日志錯誤彈簧

Request method 'POST' not supported
2017-04-26 22:41:55.168  WARN 8388 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved exception caused by Handler execution: org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported

如果您在 @RestController 中刪除 / api,則使用 @Post 注釋的方法有效

localhost:8080/salvar?nome=Igreja&coordenadaX=10&coordenadaY=20

您需要在@RestController 注釋后在@RequestMapping 上設置uri 路徑,例如:

@RestController
@RequestMapping("/yourpath")
public class YourClass {
  ...
  ...
}

因此,在您的代碼中,您在 @RestController 中設置了此路徑,這就是郵遞員請求在沒有 /api 路徑的“/salvar”上工作的原因,因為對於 spring,此路徑未聲明。

您將 POST 與 GET 混合使用。 如果您想進行 POST,請執行以下操作:

@RestController("/api")
public class CoordenadaController {

@Autowired private RepositorioCoordenada repositorioCoordenada;

@PostMapping("/salvar")
public void save(@RequestBody Payload payload) {
    this.repositorioCoordenada.save(new Coordenada(payload.nome, payload.coordenadaX, payload.coordenadaY));
    System.out.println("Salvou.....");
}

}

public class Payload{
String nome, int coordenadaX, int coordenadaY

//getters & setters
}

然后相應地使用郵遞員:使用 post 方法,創建一個 json 負載並將其添加到 Body 部分

json 有效載荷:

{
    "nome": "bla bla",
    "coordenadaX": "1",
    "coordenadaY": "2"
}

您可以查看 spring 教程以獲取更多信息: https : //spring.io/guides/gs/rest-service/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM