Commit 0d04f0ab by Patryk Czarnik

getPrice i getPhoto

parent f502ed42
package sklep.rest; package sklep.rest;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -12,6 +13,7 @@ import org.springframework.web.server.ResponseStatusException; ...@@ -12,6 +13,7 @@ import org.springframework.web.server.ResponseStatusException;
import sklep.model.Product; import sklep.model.Product;
import sklep.repository.ProductRepository; import sklep.repository.ProductRepository;
import sklep.util.PhotoUtil;
@RestController @RestController
@RequestMapping("/rest/products") @RequestMapping("/rest/products")
...@@ -19,6 +21,9 @@ public class ProductEndpoint { ...@@ -19,6 +21,9 @@ public class ProductEndpoint {
@Autowired @Autowired
private ProductRepository productRepository; private ProductRepository productRepository;
@Autowired
private PhotoUtil photoUtil;
@GetMapping @GetMapping
public List<Product> readAll() { public List<Product> readAll() {
return productRepository.findAll(); return productRepository.findAll();
...@@ -29,4 +34,17 @@ public class ProductEndpoint { ...@@ -29,4 +34,17 @@ public class ProductEndpoint {
return productRepository.findById(id).orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND)); return productRepository.findById(id).orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND));
} }
// Ta metoda pokazana tylko po to, aby wytłumaczyć, że struktura adresów powinna odpowiadać logicznej strukturze danych.
// W prawdziwej aplikacji raczej nie dochodzi się do poziomu pojedynczych pól. Teoretycznie można.
@GetMapping("/{id}/price")
public BigDecimal getPrice(@PathVariable Integer id) {
return readOne(id).getPrice();
}
@GetMapping(path="/{id}/photo", produces="image/jpeg")
public byte[] getPhoto(@PathVariable Integer id) {
return photoUtil.readBytes(id);
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment