Spring Boot CRUD операция для создания конфигурации веб-сервиса - PullRequest
0 голосов
/ 25 февраля 2020

Я новичок в использовании Spring Boot. Я пытаюсь создать спокойный веб-сервис для операций CRUD.

Я создал файлы модели, хранилища и ниже: Файл службы:

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    @SpringBootApplication
    public class EmployeeServiceApplication {
     public static void main(String[] args) {
        SpringApplication.run(EmployeeServiceApplication.class, args);
     }
    }

Файл контроллера:


@RestController
public class Controller {

    @Autowired
    private EmployeeServiceDesc employeeService;

    @GetMapping("/employee/")
    public List<Employee> getAllEmployees() {
        return employeeService.getAllEmployees();
    }

    @GetMapping("/employee/{employeeId}")
    public Employee getEmployeeById(@PathVariable int employeeId) {
        return employeeService.getEmployeeById(employeeId);
    }

    @PostMapping("/employee/")
    public ResponseEntity<Void> add(@RequestBody Employee newEmployee, UriComponentsBuilder builder) {
        Employee employee = employeeService.addEmployee(newEmployee);
        if(employee == null) {
            return ResponseEntity.noContent().build();
        }
        HttpHeaders headers = new HttpHeaders();
        headers.setLocation(builder.path("/employee/{id}").buildAndExpand(employee.getId()).toUri());
        return new ResponseEntity<Void>(headers, HttpStatus.CREATED);
    }

    @PutMapping("/employee/")
    public ResponseEntity<Employee> updateEmployee(@RequestBody Employee v) {
        Employee employee = employeeService.getEmployeeById(v.getId());
        if(employee == null) {
            return new ResponseEntity<Employee>(HttpStatus.NOT_FOUND);
        }
        employee.setName(employee.getName());
        employee.setDOB(employee.getDOB());
        employee.setSalary(employee.getSalary());
        employeeService.updateEmployee(employee);
        return new ResponseEntity<Employee>(employee, HttpStatus.OK);
    }

    @DeleteMapping("/employee/{id}")
    public ResponseEntity<Employee> deleteEmployee(@PathVariable int id) {
        Employee employee = employeeService.getEmployeeById(id);
        if(employee == null) {
            return new ResponseEntity<Employee>(HttpStatus.FOUND);
        }
        employeeService.deleteEmployee(id);
        return new ResponseEntity<Employee>(HttpStatus.NO_CONTENT);
    }
}

Когда я отправляю запрос через Почтальон, я получаю сообщение об ошибке: Не найдено. Я думаю, что мне не хватает какой-либо конфигурации, но не уверен, какую именно мне следует делать? Кто-нибудь может мне помочь с этим?

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

Вам не обязательно нужен @RequestMapping, чтобы ваш сервис был доступен. Я полагаю, что проблема здесь в том, что в конце вашего сопоставления стоит символ «/». Попробуйте заменить

@GetMapping("/employee/")

на

@GetMapping("/employee")
0 голосов
/ 25 февраля 2020

У вас должно быть что-то вроде ниже (у вас должна быть карта запроса)

@RestController
@RequestMapping("/")
public class Controller {
......
....
..
}
@RestController
@RequestMapping("/api")
public class Controller {
}

После комментария не работает

spring-boot будет сканировать для компонентов в пакетах ниже com.xx, поэтому, если ваш контроллер находится в com.xx, вам нужно явно отсканировать его

@SpringBootApplication
@ComponentScan(basePackageClasses = Controller.class) // you should be able to justified as your packages structure 
    public class EmployeeServiceApplication {
     public static void main(String[] args) {
        SpringApplication.run(EmployeeServiceApplication.class, args);
     }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...