我正在學習 Spring Boot rn,當我嘗試使用 POST 方法時遇到錯誤。
HTTP 代碼是 400。
這就是錯誤:
這是我的休息控制器c的代碼:
package com.example.carsapi;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.awt.*;
import java.util.Optional;
@RestController
@RequestMapping("/cars")
public class CarRestController {
private final CarService carService;
@Autowired
public CarRestController(CarService carService) {
this.carService = carService;
}
@GetMapping
public ResponseEntity<List> getCars(){
return new ResponseEntity(carService.findAllCars(), HttpStatus.OK);
}
@GetMapping(value = "/id/{id}")
public ResponseEntity<List> getCarById(@PathVariable Integer id){
Optional<CarDTO> found = carService.findAllCars().stream().filter(car -> car.getCarId() == id).findFirst();
if(found.isPresent()){
return new ResponseEntity(found.get(), HttpStatus.OK);
} else {
return new ResponseEntity(HttpStatus.NOT_FOUND);
}
}
@GetMapping(value = "/color/{color}")
public ResponseEntity<List> getCarByColor(@PathVariable String color){
Optional<CarDTO> found = carService.findAllCars().stream().filter(car -> car.getColor().equals(color)).findFirst();
if(found.isPresent()){
return new ResponseEntity(found.get(), HttpStatus.OK);
} else {
return new ResponseEntity(HttpStatus.NOT_FOUND);
}
}
@PostMapping(value = "/add")
public ResponseEntity addCar(@RequestBody CarDTO car){
carService.findAllCars().add(car);
return new ResponseEntity(HttpStatus.CREATED);
}
}
還有我正在使用的 JSON 代碼:
[
{
"carId": 3,
"carBrand": "Audi",
"carModel": "RS6",
"color": "red"
}
]
希望你能幫助我,我什至嘗試過@RequestParam,獲取所有值,如,,id然后添加一個新物件,這些值是我從查詢中獲得的,但它仍然不起作用。brandmodelcolor
uj5u.com熱心網友回復:
請求是一個陣列,CarDTO而是一個物件。您可以使用這樣的正文發出請求(注意沒有[]):
{
"carId": 3,
"carBrand": "Audi",
"carModel": "RS6",
"color": "red"
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/414766.html
標籤:
上一篇:@BeforeAdvise不適用于SpringBOOT中的相同方法名稱
下一篇:以Maven的方式呼叫javac
