Spring Boot: ошибка 404 при доступе к конечной точке локального хостаJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Spring Boot: ошибка 404 при доступе к конечной точке локального хоста

Сообщение Anonymous »

Просто хочу немного рассказать о проекте; Я создаю проект Spring Boot, используя Maven. У меня есть два микросервиса: один называется «продукты», а другой — «конфигурационный сервер», для настройки различных микросервисов. У меня уже есть база данных под названием «product» на моем локальном сервере postgres с таблицей под названием «product», в которой есть множество элементов.

К сожалению, я получаю следующую ошибку, когда пытаюсь сделать запрос GET к URL-адресу http://localhost:8222/api/v1/products несмотря на настройку конечных точек:

Код: Выделить всё

{
"timestamp": 1436442596410,
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/api/v1/products"
}
Вот некоторые из соответствующих файлов:
ProductController.java:

Код: Выделить всё

@RestController
@RequestMapping("/api/v1/products")
@RequiredArgsConstructor
public class ProductController {

private final ProductService service;

@PostMapping
public ResponseEntity createProduct(
@RequestBody @Valid ProductRequest request
) {
return ResponseEntity.ok(service.createProduct(request));
}

@PostMapping("/purchase")
public ResponseEntity purchaseProducts(
@RequestBody List request
) {
return ResponseEntity.ok(service.purchaseProducts(request));
}

@GetMapping("/{product-id}")
public ResponseEntity findById(
@PathVariable("product-id") Integer productId
) {
return ResponseEntity.ok(service.findById(productId));
}

@GetMapping
public ResponseEntity findAll() {
return ResponseEntity.ok(service.findAll());
}
}
ProductService.java:

Код: Выделить всё

@Service
@RequiredArgsConstructor
public class ProductService {

private final ProductRepository repository;
private final ProductMapper mapper;

public Integer createProduct(
ProductRequest request
) {
var product = mapper.toProduct(request);
return repository.save(product).getId();
}

public ProductResponse findById(Integer id) {
return repository.findById(id)
.map(mapper::toProductResponse)
.orElseThrow(() -> new EntityNotFoundException("Product not found with ID:: " + id));
}

public List
 findAll() {
return repository.findAll()
.stream()
.map(mapper::toProductResponse)
.collect(Collectors.toList());
}

@Transactional(rollbackFor = ProductPurchaseException.class)
public List purchaseProducts(
List request
) {
var productIds = request
.stream()
.map(ProductPurchaseRequest::productId)
.toList();
var storedProducts = repository.findAllByIdInOrderById(productIds);
if (productIds.size() != storedProducts.size()) {
throw new ProductPurchaseException("One or more products does not exist");
}
var sortedRequest = request
.stream()
.sorted(Comparator.comparing(ProductPurchaseRequest::productId))
.toList();
var purchasedProducts = new ArrayList();
for (int i = 0; i < storedProducts.size(); i++) {
var product = storedProducts.get(i);
var productRequest = sortedRequest.get(i);
if (product.getAvailableQuantity() < productRequest.quantity()) {
throw new ProductPurchaseException("Insufficient stock quantity for product with ID:: "  + productRequest.productId());
}
var newAvailableQuantity = product.getAvailableQuantity() - productRequest.quantity();
product.setAvailableQuantity(newAvailableQuantity);
repository.save(product);
purchasedProducts.add(mapper.toproductPurchaseResponse(product, productRequest.quantity()));
}
return purchasedProducts;
}

}
Вот файл ProductApplication.java, который находится вне файла контроллера:

Код: Выделить всё

@SpringBootApplication
public class ProductApplication {

public static void main(String[] args) {
SpringApplication.run(ProductApplication.class, args);
}

}
Теперь в моем микросервисе «config-server» у меня есть несколько файлов YAML для управления службами.
Вот файл Gateway-service.yml. файл:

Код: Выделить всё

server:
port: 8222
spring:
cloud:
gateway:
discovery:
locator:
enabled: true
routes:
- id: product-service
uri: lb:http://PRODUCT-SERVICE
predicates:
- Path=/api/v1/products/**
product-service.yml:

Код: Выделить всё

server:
port: 8050
spring:
datasource:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://localhost:5432/product
username: XXX
password: XXX
jpa:
hibernate:
ddl-auto: validate
database: postgresql
database-platform: org.hibernate.dialect.PostgreSQLDialect
flyway:
baseline-on-migrate: true
enabled: true
baseline-description: "init"
baseline-version: 0
user: ${spring.datasource.username}
password: ${spring.datasource.password}
А это файл application.yml для настройки сервера Eureka:

Код: Выделить всё

eureka:
instance:
hostname: localhost
client:
service-url:
defaultZone: http://localhost:8761/eureka
name:
value: XXX
spring:
cloud:
config:
override-system-properties: false

management:
tracing:
sampling:
probability: 1.0
Что я пробовал:
Я подтвердил, что все микросервисы развернуты на сервере Eureka в порту 8761:
Изображение

Я тоже в значительной степени На 100% уверен, что ни в моей файловой иерархии, ни в любом из моих файлов pom.xml нет ошибок.

Я также подтвердил, что приложение Spring Boot может подключаться к моей базе данных postgresSQL, как я смог вставить туда некоторые данные с помощью Flyway.
Я был бы признателен за любую помощь относительно того, почему я получаю ошибку 404 при выполнении запроса GET. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/787 ... t-endpoint
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»