Spring Download the complete REST CRUD example

Does anyone have a complete REST CRUD boot example for spring boot? Spring.io only has RequestMapping for GET. I can make POST and DELETE work, but not PUT.

I suspect that I am trying to get the parameters where it is disabled, but I have not seen an example when someone is performing an update.

I am currently using the SO iPhone app, so I cannot insert my current code. Any working examples would be great!

+7
source share
7 answers

As you can see, I implemented two methods of updating. The first will get json, and the second will get cusotmerId in the URL and json as well.

@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; } } } 
+9
source

Or alternatively:

 @RepositoryRestResource public interface CustomerRepository extends JpaRepository<Customer, Long> { } 

To use the org.springframework.data.rest.core.annotation.RepositoryRestResource annotation, you need to add the following dependency to your pom.xml:

 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> </dependency> 
+5
source

An alternative update returns a ResponseEntity object.

 @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); } } 

From Spring MVC RESTFul Web Service CRUD Example

+3
source

I prepared a set of Spring Boot CRUD Operations tutorials. The following are the contents of the textbooks:

  • How to create a Spring Boot Project using the Spring Tool Suite
  • How to implement GET and POST method in Spring boot web service
  • How to implement the PUT and DELETE method in Spring boot web service
  • PostgreSQL Database Integration Using Spring JPA Downloads Using Spring Boot Web Service
  • Using CURL Commands

Youtube tutorials:

For more information, visit Blog .

+1
source

You can find the full Spring Boot REST API project with CRUD here:

Spring Roost Complete REST CRUD Example

+1
source

You can get my full RESTful server and client application using SpringBoot in Spring RESTFul examples in github

0
source
 package com.controllers; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; import com.cats.hcm.bussinessObjects.Address; import com.cats.hcm.bussinessObjects.Employee; import com.cats.hcm.bussinessObjects.EmployeeBO; import com.cats.hcm.bussinessObjects.MaritalStatus; import com.cats.hcm.bussinessObjects.State; import com.cats.hcm.repository.EmployeeRepositoryImpl; import com.cats.hcm.repository.MaritalStatusRepositoryImpl; import com.cats.hcm.repository.Repository; import com.cats.hcm.repository.StateRepositoryImpl; import com.cats.hcm.services.EmployeeServiceImpl; import com.google.gson.Gson; @Controller @RequestMapping("/newemployee") public class NewEmployeeController { private static final Logger logger = LoggerFactory.getLogger(Repository.class); @Autowired Repository repository; @Autowired StateRepositoryImpl stateRepositoryImpl; @Autowired MaritalStatusRepositoryImpl maritalStatusRepositoryImpl; @Autowired EmployeeRepositoryImpl employeeRepositoryImpl; @Autowired EmployeeServiceImpl employeeServiceImpl; @RequestMapping(value="/save", method=RequestMethod.POST) public @ResponseBody String addEmployee(@RequestBody EmployeeBO employeeBO, BindingResult bindingResult) throws SecurityException, ClassNotFoundException, IllegalArgumentException, IllegalAccessException, IOException { logger.info("==========="+new Gson().toJson(employeeBO)); logger.info("========Employee ID========"+employeeBO.getEmployeeId()); repository.addToDataBase(employeeBO); String msg="Success"; return msg; } @RequestMapping(value="/update", method=RequestMethod.POST) public @ResponseBody String updateEmployee(@RequestBody EmployeeBO employeeBO, BindingResult bindingResult) throws SecurityException, ClassNotFoundException, IllegalArgumentException, IllegalAccessException, IOException { logger.info("==========="+new Gson().toJson(employeeBO)); logger.info("========Employee ID========"+employeeBO.getEmployeeId()); //Deleting Existing Employee Boolean isDeleted = employeeServiceImpl.deleteEmployeeDetails(employeeBO.getEmployeeId()); if(isDeleted) { repository.addToDataBase(employeeBO); } String msg="Success"; return msg; } @RequestMapping("/employeeData") public @ResponseBody List<Employee> getEmployeeDataTablePage() { logger.info("======getEmployeeDataTablePage======"); List<Employee> employeeList = employeeRepositoryImpl.readAll(); logger.info("========EmployeeList========="+new Gson().toJson(employeeList)); return employeeList; } @RequestMapping("/modifyPage") public @ResponseBody List<Employee> getEmployeeModifyPage(@RequestParam("employeeId") String employeeId) { logger.info("========getEmployeeModifyPage====EmployeeID:===="+employeeId); //List<State> stateList = stateRepositoryImpl.readAll(); //List<MaritalStatus> maritalStatusList = maritalStatusRepositoryImpl.readAll(); //model.addAttribute("stateList", stateList); //model.addAttribute("maritalStatusList", maritalStatusList); List<Employee> employeeList = employeeRepositoryImpl.readAll(); logger.info("========employeeList:===="+employeeList); EmployeeBO employeeBO = employeeServiceImpl.getEmployeeBO(employeeId); logger.info("========getEmployeeModifyPage====EmployeeBO:===="+employeeBO); return employeeList; //return new ModelAndView("apps-mod-employee", "employee", employeeBO); } @RequestMapping("/delete") public @ResponseBody String deleteEmployee(@RequestParam("employeeId") String employeeId) { logger.info("========deleteEmployee===EmployeeID:===="+employeeId); //employeeRepositoryImpl.delete(employeeServiceImpl.getEmployeeBO(employeeId)); Boolean isDeleted = employeeServiceImpl.deleteEmployeeDetails(employeeId); if(isDeleted) { logger.info("========Employee Record Deleted===EmployeeID:===="+employeeId); } return "redirect:/employee/employeeDataTable"; } /*@RequestMapping("/employeeDataByEmpId") public String getEmployeeAddPage(Map<String, Object> model) { public ModelAndView getEmployeeDataByEmpId(ModelMap model,HttpServletRequest request, HttpServletResponse response) { logger.info("======getEmployeeDataByEmpId======"); String EmployeeID=request.getParameter("empId"); Employee employee = employeeRepositoryImpl.read(EmployeeID); logger.info("========Employee========="+new Gson().toJson(employee)); model.addAttribute(new EmployeeBO()); model.addAttribute("employeeByEmpId", employee); //return "apps-add-employee"; //return new ModelAndView("apps-add-employee"); return new ModelAndView("apps-employee", "employee", new EmployeeBO()); }*/ } 
0
source

Source: https://habr.com/ru/post/1212241/


All Articles