Пример Spring Boot full REST CRUD
есть ли у кого-нибудь полный пример spring boot REST CRUD? Весна.сайт io просто имеет RequestMapping для GET. Я могу получить сообщение и удалить работу, но не поставить.
Я подозреваю, что именно так я пытаюсь получить параметры, где разъединение, но я не видел примера, когда кто-то выполняет обновление.
в настоящее время я использую приложение so iPhone, поэтому я не могу вставить свой текущий код. Любые рабочие примеры были бы великолепны!
6 ответов
Как вы можете видеть, я реализовал два способа обновления. Первый получит json, а второй получит cusotmerId в URL и json также.
@RestController
@RequestMapping("/customer")
public class CustomerController {
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public Customer greetings(@PathVariable("id") Long id) {
Customer customer = new Customer();
customer.setName("Eddu");
customer.setLastname("Melendez");
return customer;
}
@RequestMapping(value = "/", method = RequestMethod.GET)
public List<Customer> list() {
return Collections.emptyList();
}
@RequestMapping(method = RequestMethod.POST)
public void add(@RequestBody Customer customer) {
}
@RequestMapping(method = RequestMethod.PUT)
public void update(@RequestBody Customer customer) {
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
public void updateById(@PathVariable("id") Long id, @RequestBody Customer customer) {
}
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
public void delete() {
}
class Customer implements Serializable {
private String name;
private String lastname;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getLastname() {
return lastname;
}
}
}
или же:
@RepositoryRestResource
public interface CustomerRepository extends JpaRepository<Customer, Long> {
}
использовать аннотации org.springframework.data.rest.core.annotation.RepositoryRestResource
, вам нужно добавить следующую зависимость к вашему pom.XML-код:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
альтернативное обновление возвращает объект ResponseEntity.
@RestController
@RequestMapping("/fruits")
public class FruitController {
private final Logger LOG = LoggerFactory.getLogger(FruitController.class);
@Autowired
private FruitService fruitService;
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<List<Fruit>> getAll(@RequestParam(value = "offset", defaultValue = "0") int index,
@RequestParam(value = "numberOfRecord", defaultValue = "10") int numberOfRecord) {
LOG.info("Getting all fruits with index: {}, and count: {}", index, numberOfRecord);
List<Fruit> fruits = fruitService.getAll(index, numberOfRecord);
if (fruits == null || fruits.isEmpty()) {
return new ResponseEntity<List<Fruit>>(HttpStatus.NO_CONTENT);
}
return new ResponseEntity<List<Fruit>>(fruits, HttpStatus.OK);
}
@RequestMapping(value = "{id}", method = RequestMethod.GET)
public ResponseEntity<Fruit> get(@PathVariable("id") int id) {
LOG.info("Getting fruit with id: {}", id);
Fruit fruit = fruitService.findById(id);
if (fruit == null) {
return new ResponseEntity<Fruit>(HttpStatus.NOT_FOUND);
}
return new ResponseEntity<Fruit>(fruit, HttpStatus.OK);
}
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<Void> create(@RequestBody Fruit fruit, UriComponentsBuilder ucBuilder) {
LOG.info("Creating fruit: {}", fruit);
if (fruitService.exists(fruit)) {
return new ResponseEntity<Void>(HttpStatus.CONFLICT);
}
fruitService.create(fruit);
HttpHeaders headers = new HttpHeaders();
headers.setLocation(ucBuilder.path("/fruit/{id}").buildAndExpand(fruit.getId()).toUri());
return new ResponseEntity<Void>(headers, HttpStatus.CREATED);
}
@RequestMapping(value = "{id}", method = RequestMethod.PUT)
public ResponseEntity<Fruit> update(@PathVariable int id, @RequestBody Fruit fruit) {
LOG.info("Updating fruit: {}", fruit);
Fruit currentFruit = fruitService.findById(id);
if (currentFruit == null) {
return new ResponseEntity<Fruit>(HttpStatus.NOT_FOUND);
}
currentFruit.setId(fruit.getId());
currentFruit.setName(fruit.getName());
fruitService.update(fruit);
return new ResponseEntity<Fruit>(currentFruit, HttpStatus.OK);
}
@RequestMapping(value = "{id}", method = RequestMethod.DELETE)
public ResponseEntity<Void> delete(@PathVariable("id") int id) {
LOG.info("Deleting fruit with id: {}", id);
Fruit fruit = fruitService.findById(id);
if (fruit == null) {
return new ResponseEntity<Void>(HttpStatus.NOT_FOUND);
}
fruitService.delete(id);
return new ResponseEntity<Void>(HttpStatus.OK);
}
}
Я подготовил набор учебных пособий по операциям Spring Boot CRUD. Ниже приведены содержание учебников:
- как создать проект Spring Boot с помощью Spring Tool Suite
- как реализовать метод GET & POST в spring boot restful web service
- как реализовать метод PUT & DELETE в spring boot restful web service
- интеграция базы данных PostgreSQL с помощью spring boot JPA с spring boot restful web сервис
- использование команд CURL
Ютуб Уроки:
- Spring Boot Restful Веб-Сервис Учебник / Учебник 1 - Введение
- Spring Boot Restful Web Services CRUD пример GET & POST / учебник-2
- пример операций Spring boot CRUD PUT & DELETE / учебник-3
- Spring Boot JPA / в 5 простых шагах интеграции База Данных PostgreSQL / Туориал - 4
посетить блог для получения более подробной информации.
вы можете получить мой полный сервер RESTful и клиентское приложение с помощью SpringBoot в весенние примеры RESTFul в github