405 Метод не разрешен: GET не разрешенJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 405 Метод не разрешен: GET не разрешен

Сообщение Anonymous »

Я создаю простое веб-приложение для бронирования автобусов на Java 21 для серверной части. Я продолжаю получать сообщение об ошибке 405. Метод не разрешен (GET не поддерживается). Это мой текущий код, и я тестирую его с помощью почтальона
АВТОБУСНЫЙ КОНТРОЛЛЕР

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

package com.example.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
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.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.example.DTO.BusDTO;
import com.example.Service.BusService;

@RestController
@RequestMapping("/api/buses")
public class BusController {

@Autowired
private BusService busService;

// GET: Retrieve all buses
@GetMapping
public ResponseEntity getAllBuses() {
List buses = busService.getAllBuses();
return ResponseEntity.ok(buses);
}

// GET: Retrieve a specific bus by ID
@GetMapping("/{id}")
public ResponseEntity getBusById(@PathVariable Long id) {
BusDTO bus = busService.getBusById(id);
if (bus != null) {
return ResponseEntity.ok(bus);
} else {
return ResponseEntity.notFound().build();
}
}

// POST: Add a new bus
@PostMapping
public ResponseEntity createBus(@RequestBody BusDTO busDTO) {
BusDTO createdBus = busService.addBus(busDTO);
return ResponseEntity.ok(createdBus);
}

// Optional Test Endpoint
@GetMapping("/test")
public ResponseEntity  testEndpoint() {
return ResponseEntity.ok("Test endpoint is working!");
}
}

BUS DTO

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

package com.example.DTO;

import com.fasterxml.jackson.annotation.JsonProperty;

import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Positive;
import jakarta.validation.constraints.Size;

public class BusDTO {

private Long busNr;

@NotNull(message = "Model cannot be null")
@Size(max = 100, message = "Model name cannot exceed 100 characters")
@JsonProperty("modell")
private String modell;

@NotNull(message = "Availability status cannot be null")
@JsonProperty("bereit")
private Boolean bereit;

@NotNull(message = "Number of seats cannot be null")
@Positive(message = "Number of seats must be positive")
@JsonProperty("sitzAnz")
private Integer sitzAnz;

// Getters and Setters
public Long getBusNr() {
return busNr;
}

public void setBusNr(Long busNr) {
this.busNr = busNr;
}

public String getModell() {
return modell;
}

public void setModell(String modell) {
this.modell = modell;
}

public Boolean getBereit() {
return bereit;
}

public void setBereit(Boolean bereit) {
this.bereit = bereit;
}

public Integer getSitzAnz() {
return sitzAnz;
}

public void setSitzAnz(Integer sitzAnz) {
this.sitzAnz = sitzAnz;
}
}

АВТОБУСНЫЙ ОБЪЕКТ

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

package com.example.Entity;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

@Entity
public class Bus {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long busNr;
private String modell;
private boolean bereit;
private int sitzAnz;

// Getters und Setters
public Long getBusNr() {
return busNr;
}

public void setBusNr(Long busNr) {
this.busNr = busNr;
}

public String getModell() {
return modell;
}

public void setModell(String modell) {
this.modell = modell;
}

public boolean isBereit() {
return bereit;
}

public void setBereit(boolean bereit) {
this.bereit = bereit;
}

public int getSitzAnz() {
return sitzAnz;
}

public void setSitzAnz(int sitzAnz) {
this.sitzAnz = sitzAnz;
}
}

АВТОБУСНЫЙ СЕРВИС

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

package com.example.Service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.example.DTO.BusDTO;
import com.example.Entity.Bus;
import com.example.repository.BusRepository;

@Service
public class BusService {

@Autowired
private BusRepository busRepository;

public BusDTO addBus(BusDTO busDTO) {
Bus bus = new Bus();
bus.setModell(busDTO.getModell());
bus.setBereit(busDTO.getBereit());
bus.setSitzAnz(busDTO.getSitzAnz());

bus = busRepository.save(bus);

BusDTO savedDTO = new BusDTO();
savedDTO.setBusNr(bus.getBusNr());
savedDTO.setModell(bus.getModell());
savedDTO.setBereit(bus.isBereit());
savedDTO.setSitzAnz(bus.getSitzAnz());
return savedDTO;
}

public List getAllBuses() {
return busRepository.findAll()
.stream()
.map(bus -> {
BusDTO dto = new BusDTO();
dto.setBusNr(bus.getBusNr());
dto.setModell(bus.getModell());
dto.setBereit(bus.isBereit());
dto.setSitzAnz(bus.getSitzAnz());
return dto;
})
.toList();
}

public BusDTO getBusById(Long id) {
return busRepository.findById(id)
.map(bus ->  {
BusDTO dto = new BusDTO();
dto.setBusNr(bus.getBusNr());
dto.setModell(bus.getModell());
dto.setBereit(bus.isBereit());
dto.setSitzAnz(bus.getSitzAnz());
return dto;
})
.orElse(null);
}
}

Docker-compose.yml

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

version: "3.8"

services:
# MySQL service for Kunden
kunden-db:
image: mysql:latest
container_name: kunden-db
environment:
MYSQL_DATABASE: kundenDB
MYSQL_ROOT_PASSWORD: root-new
ports:
- "3307:3306"
volumes:
- kunden-db-data:/var/lib/mysql
- ./DB/conf/kunden.sql:/docker-entrypoint-initdb.d/kunden.sql
networks:
- app-network

# MySQL service for Fahrzeuge
fahrzeug-db:
image: mysql:latest
container_name: fahrzeug-db
environment:
MYSQL_DATABASE: fahrzeugDB
MYSQL_ROOT_PASSWORD: root-new
ports:
- "3308:3306"
volumes:
- fahrzeug-db-data:/var/lib/mysql
- ./DB/conf/fahrzeug.sql:/docker-entrypoint-initdb.d/fahrzeug.sql
networks:
- app-network

# Spring Boot application
spring-boot-app:
build:
context: .
dockerfile: Dockerfile
container_name: spring-boot-app
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://fahrzeug-db:3306/fahrzeugDB
SPRING_DATASOURCE_USERNAME: backend
SPRING_DATASOURCE_PASSWORD: backend-pass
SPRING_JPA_HIBERNATE_DDL_AUTO: update
ports:
- "8082:8080"
depends_on:
- fahrzeug-db
- kunden-db
networks:
- app-network

volumes:
kunden-db-data:
fahrzeug-db-data:

networks:
app-network:
driver: bridge

БАЗА ДАННЫХ

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

USE fahrzeugDB;

CREATE TABLE fahrzeug (
fahrzeugNr INT AUTO_INCREMENT PRIMARY KEY,
modell VARCHAR(100),
bereit BOOLEAN,
sitzAnz INT
) CHARACTER SET utf8mb4;

create user 'backend' identified by 'backend-pass';
grant select, insert, delete, update on fahrzeug to 'backend';

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

2024-11-20T11:29:35.651Z  WARN 1 --- [ws2024_team_f] [           main] o.h.t.s.i.ExceptionHandlerLoggedImpl     : GenerationTarget encountered exception accepting command : Error executing DDL "create table bus (bus_nr bigint not null auto_increment, bereit bit not null, modell varchar(255), sitz_anz integer not null, primary key (bus_nr)) engine=InnoDB" via JDBC [CREATE command denied to user 'backend'@'172.19.0.4' for table 'bus']
org.hibernate.tool.schema.spi.CommandAcceptanceException: ошибка при выполнении DDL «создать табличную шину (bus_nr bigint не null auto_increment, бит bereit не равен нулю, модель varchar (255), sitz_anz целое число) не нуль, первичный ключ (bus_nr)) engine=InnoDB" через JDBC [команда CREATE запрещена пользователю 'backend'@'172.19.0.4' для таблицы 'bus']
в org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:94) ~[hibernate-core-6.5. 3.Final.jar!/:6.5.3.Final]
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlString(AbstractSchemaMigrator.java:583) ~[hibernate-core-6.5.3.Final.jar!/:6.5.3.Final]
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlStrings(AbstractSchemaMigrator.java:523) ~[hibernate-core-6.5.3.Final.jar!/:6.5.3.Final]
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.createTable(AbstractSchemaMigrator.java:323) ~[hibernate-core-6.5.3.Final.jar!/:6.5.3.Final]
at org.hibernate.tool.schema.internal.GroupedSchemaMigratorImpl.performTablesMigration(GroupedSchemaMigratorImpl.java:80) ~[hibernate-core-6.5.3.Final.jar!/:6.5.3.Final]
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:240) ~[hibernate-core-6.5.3.Final.jar!/:6.5.3.Final]
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:119) ~[hibernate-core-6.5.3.Final.jar!/:6.5.3.Final]
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:280) ~[hibernate-core-6.5.3.Final.jar!/:6.5.3.Final]
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.lambda$process$5(SchemaManagementToolCoordinator.java:144) ~[hibernate-core-6.5.3.Final.jar!/:6.5.3.Final]
at java.base/java.util.HashMap.forEach(HashMap.java:1429) ~[na:na]
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:141) ~[hibernate-core-6.5.3.Final.jar!/:6.5.3.Final]
at org.hibernate.boot.internal.SessionFactoryObserverForSchemaExport.sessionFactoryCreated(SessionFactoryObserverForSchemaExport.java:37) ~[hibernate-core-6.5.3.Final.jar!/:6.5.3.Final]
at org.hibernate.internal.SessionFactoryObserverChain.sessionFactoryCreated(SessionFactoryObserverChain.java:35) ~[hibernate-core-6.5.3.Final.jar!/:6.5.3.Final]
at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:322) ~[hibernate-core-6.5. 3.Final.jar!/:6.5.3.Final]
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:457) ~[hibernate-core-6.5.3.Final.jar!/:6.5.3.Final]

at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1506) ~[hibernate-core-6.5.3.Final.jar!/:6.5.3.Final]
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75) ~[spring-orm-6.1.14.jar!/:6.1.14]
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:390) ~[spring-orm-6.1.14.jar!/:6.1.14]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-6.1.14.jar!/:6.1.14]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-6.1.14.jar!/:6.1.14]
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366) ~[spring-orm-6.1.14.jar!/:6.1.14]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1853) ~[spring-beans-6.1.14.jar!/:6.1.14]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1802) ~[spring-beans-6.1.14.jar!/:6.1.14]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600) ~[spring-beans-6.1.14.jar!/:6.1.14]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) ~[spring-beans-6.1.14.jar!/:6.1.14]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) ~[spring-beans-6.1.14.jar!/:6.1.14]

at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.14.jar!/:6.1.14]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) ~[spring-beans-6.1.14.jar!/:6.1.14]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:205) ~[spring-beans-6.1.14.jar!/:6.1.14]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:954) ~[spring-context-6.1.14.jar!/:6.1.14]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:625) ~[spring-context-6.1.14.jar!/:6.1.14]

at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.3.5.jar!/:3.3.5]
в org.springframework.boot .SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-3.3.5.jar!/:3.3.5]
в org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) ~[spring-boot-3.3.5.jar !/:3.3.5]
в org.springframework.boot.SpringApplication.run(SpringApplication.java:335) ~[spring-boot-3.3.5.jar!/:3.3.5]
в org.springframework.boot.SpringApplication.run(SpringApplication .java:1363) ~[spring-boot-3.3.5.jar!/:3.3.5]
в org.springframework.boot.SpringApplication.run(SpringApplication.java:1352) ~[spring-boot-3.3.5.jar !/:3.3.5]
в com.example.Ws2024TeamFApplication.main(Ws2024TeamFApplication.java:11) ~[!/:0.0.1-SNAPSHOT]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[на:на]
at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na]
at org.springframework.boot.loader.launch.Launcher.launch(Launcher. java:102) ~[app.jar:0.0.1-SNAPSHOT]
at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64) ~[app.jar:0.0.1-SNAPSHOT]
на org.springframework.boot.loader.launch.JarLauncher.main (JarLauncher.java:40) ~[app.jar:0.0.1-SNAPSHOT]
Вызвано автор: java.sql.SQLSyntaxErrorException: команда CREATE отклонена пользователю 'backend'@'172.19.0.4' для таблицы 'bus'
в com.mysql.cj.jdbc.Exceptions.SQLError.createSQLException(SQLError.java: 121) ~[mysql-connector-j-8.3.0.jar!/:8.3.0]
at com.mysql.cj.jdbc.Exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-j-8.3.0.jar!/:8.3.0]
at com.mysql.cj .jdbc.StatementImpl.executeInternal(StatementImpl.java:770) ~[mysql-connector-j-8.3.0.jar!/:8.3.0]
на com.mysql.cj.jdbc.StatementImpl.execute(StatementImpl.java:653) ~[mysql-connector-j -8.3.0.jar!/:8.3.0]
at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94) ~[HikariCP-5.1.0.jar!/:na]
at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement .java) ~[HikariCP-5.1.0.jar!/:na]
at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:80) ~[hibernate-core-6.5.3 .Final.jar!/:6.5.3.Final]
... 42 общих фрейма опущен
2024-11-20T11:29:35.659Z INFO 1 --- [ws2024_team_f] [ main] j.LocalContainerEntityManagerFactoryBean : Инициализированный JPA EntityManagerFactory для единицы персистентности «по умолчанию»
2024-11-20T11:29:36.060Z ПРЕДУПРЕЖДЕНИЕ 1 --- [ws2024_team_f] [ main] JpaBaseConfiguration$JpaWebConfiguration : Spring.jpa.open-in-view включен по умолчанию. Таким образом, запросы к базе данных могут выполняться во время рендеринга представления. Явно настройте Spring.jpa.open-in-view, чтобы отключить это предупреждение
2024-11-20T11:29:36.471Z WARN 1 --- [ws2024_team_f] [ main].s.s.UserDetailsServiceAutoConfiguration :
Использование сгенерированного пароля безопасности: 25e64de9-731e-495b-a589-34cb7c057fe1
Этот сгенерированный пароль предназначен только для разработчиков. Перед запуском приложения в рабочей среде необходимо обновить конфигурацию безопасности.
2024-11-20T11:29:36.496Z INFO 1 --- [ws2024_team_f] [ main] r$InitializeUserDetailsManagerConfigurer : Global AuthenticationManager настроен с помощью bean-компонента UserDetailsService с именем inMemoryUserDetailsManager
2024-11-20T11:29:36.703Z INFO 1 --- [ws2024_team_f] [main] o.s.b.w.embedded.tomcat.TomcatWebServer: Tomcat запущен на порту 8080 (http) с контекстным путем '/'
2024- 11-20T11:29:36.732Z INFO 1 --- [ws2024_team_f] [ main] com.example.Ws2024TeamFApplication : Ws2024TeamFApplication запущено за 4,901 секунды (процесс выполняется для 5,466)
2024-11-20T11:30:20.500Z INFO 1 --- [ws2024_team_f] [nio-8080-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/] : Инициализация Spring DispatcherServlet 'dispatcherServlet'
2024-11-20T11:30:20.501Z INFO 1 --- [ws2024_team_f] [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Инициализация сервлета 'dispatcherServlet'

2024-11-20T11:30:20.504Z INFO 1 --- [ws2024_team_f] [nio- 8080-exec-2] o.s.web.servlet.DispatcherServlet: инициализация завершена за 3 мс
2024-11-20T11:30:20.716Z WARN 1 --- [ws2024_team_f] [nio-8080-exec-2].w.s.m.s.DefaultHandlerExceptionResolver: решено [org.springframework.web.HttpRequestMethodNotSupportedException: метод запроса «GET» не поддерживается]
Я продолжал пытаться настроить контроллер и класс обслуживания для поддержки метода GET, но возникает та же ошибка < /п>

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • 405 Метод не разрешен: GET не разрешен
    Anonymous » » в форуме JAVA
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Ошибка «Метод HTTP-кода 405 не разрешен» при использовании CURL для запроса GET
    Anonymous » » в форуме Php
    0 Ответы
    58 Просмотры
    Последнее сообщение Anonymous
  • Метод не разрешен. 405 не позволяет использовать методы post, поскольку методы get работают.
    Anonymous » » в форуме C#
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Метод не разрешен. 405 не позволяет использовать методы post, поскольку методы get работают.
    Anonymous » » в форуме C#
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Ошибка «Метод HTTP-кода 405 не разрешен» при использовании CURL для запроса GET
    Anonymous » » в форуме Php
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

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