Salve, dovrei usare per un progetto fatto con springboot, il getmapping per creare una rotta che, passato un id, mi restituisca tutte le classi che hanno lo stesso id(sto facendo dei test usando l'id, poi dovrei cercare prodotti usando altri parametri).
Come esempio ho questo progetto, vi allego i vari codici:
Questa è la classe usata per dei prodotti alimentari
package it.progetto.DemoSpringBootApp.model;
public class Product {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Questa è l'interfaccia che richiama le funzioni:
package it.progetto.DemoSpringBootApp.service;
import java.util.Collection;
import org.springframework.http.ResponseEntity;
import it.progetto.DemoSpringBootApp.model.Product;
public interface ProductService {
public abstract void CreateProduct(Product product);
public abstract Collection<Product>getProducts();
}
Questa è la classe che implementa quella precedente:
package it.progetto.DemoSpringBootApp.service;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.web.server.ResponseStatusException;
import it.progetto.DemoSpringBootApp.model.Product;
@Service
public class ProductServiceImpl implements ProductService {
private static Map<Integer, Product>ProductRepo=new HashMap<>();
public ProductServiceImpl() {
Product miele=new Product();
miele.setId(1);
miele.setName("Miele");
ProductRepo.put(miele.getId(),miele);
Product acqua=new Product();
acqua.setId(2);
acqua.setName("Acqua");
ProductRepo.put(acqua.getId(),acqua);
}
@Override
public void CreateProduct(Product product) {
if(ProductRepo.containsKey(product.getId())) {
throw new ResponseStatusException(HttpStatus.BAD_REQUEST,"Existing id...");
}
ProductRepo.put(product.getId(), product);
}
@Override
public Collection<Product> getProducts() {
return ProductRepo.values();
}
}
Infine ecco il controller, dove ho fatto solo una rotta che mi restituisce l'intera lista di prodotti:
package it.progetto.DemoSpringBootApp.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import it.progetto.DemoSpringBootApp.service.ProductService;
@RestController
public class ProductController {
@Autowired
ProductService productService;
@RequestMapping(value="/products")
public ResponseEntity<Object>getProduct(){
return new ResponseEntity<>(productService.getProducts(), HttpStatus.OK);
}
Vi chiedevo quindi se potreste aiutarmi a creare una rotta per filtrare i risultati, in base a dei parametri passati(Nel mio caso, per esempio l'id).
Vi ringrazio