Spring MVC конвертировать Spring Rest Api - PullRequest
2 голосов
/ 03 июля 2019

У меня есть проект Spring MVC, я хочу преобразовать проект Spring Rest API.

Вот мои примеры кодов;

Мой контроллер

@Controller
@RequestMapping("/student")
public class StudentController {

    @Autowired
    private StudentService studentService;

    @Autowired
    private SchoolService schoolService;
    @GetMapping("/list")
    public String ListStudents(Model model) {

        List<Student> theStudent = studentService.getStudents();
        model.addAttribute("students", theStudent);

        return "List-student";
    }

    @GetMapping("/addNewStudent")
    public String addNewStudent(Model model) {

        Student theStudent = new Student();
        model.addAttribute("student", theStudent);

        List<School> theSchool = schoolService.getSchools();
        model.addAttribute("schools", theSchool);
        return "student-form";
    }

    @PostMapping("/saveStudent")
    public String saveStudent(@ModelAttribute("student") Student theStudent) {

        studentService.saveStudent(theStudent);

        return "redirect:/student/list";
    }

    @GetMapping("/showFormforUpdate")
    public String showFormForUpdate(@RequestParam("studentID") int theId, Model model) {

        Student theStudent = studentService.getStudent(theId);
        model.addAttribute(theStudent);
        List<School> theSchool = schoolService.getSchools();
        model.addAttribute("schools", theSchool);
        return "student-form";

    }

    @GetMapping("/deleteStudent")
    public String deleteStudent(@RequestParam("studentID") int theId, Model model) {

        studentService.deleteStudent(theId);

        return "redirect:/student/list";
    }

}

Мой класс DAOImpl

    @Repository
public class StudenDAOImpl implements StudentDAO {

    @Autowired
    private SessionFactory sessionFactory;


    @Override
    @Transactional
    public List<Student> getStudents() {

        Session currentSession=sessionFactory.getCurrentSession();
        Query<Student> theQuery = currentSession.createQuery("from Student", Student.class);
        List<Student> students=theQuery.getResultList();
        return students;
    }


    @Override
    public void saveStudent(Student theStudent) {

        Session currentSession=sessionFactory.getCurrentSession();
        currentSession.saveOrUpdate(theStudent);
    }


    @Override
    public Student getStudent(int theId) {

        Session currentSession=sessionFactory.getCurrentSession();
        Student theStudent=currentSession.get(Student.class, theId);

        return theStudent;
    }


    @Override
    public void deleteStudent(int theId) {
        Session currentSession=sessionFactory.getCurrentSession();
        Query theQuery=currentSession.createQuery("delete from Student where id=:studentID");
        theQuery.setParameter("studentID", theId);
        theQuery.executeUpdate();

    }

}

На самом деле я знаю места, которые мне нужно изменить. Но я не очень хорошо знаю Spring Rest Api. В моем коде я посылаю много атрибутов в моем представлении (файл JSP), и я ловлю эти атрибуты здесь Но у RestApi нет просмотров. Мне нужно удалить атрибут функции. Но что я могу добавить вместо функций атрибута? Я новичок в RestApi, пожалуйста, помогите мне, что мне делать?

1 Ответ

0 голосов
/ 03 июля 2019

добро пожаловать в переполнение стека.

API-интерфейсы Rest работают так:

  • Вы предоставляете конечную точку и глагол (например, GET at / Students)
  • Какой-то клиент вызывает вашу конечную точку (делает вызов серверу, на котором хранится ваше приложение)
  • Ваш сервер делегирует вызов функции контроллера (например, функции с @GetMapping("/students"))
  • Функция контроллера отправляет ответ клиенту (С помощью Spring ваш метод возвращает объект или ResponseEntity)

API REST получают запросы, обрабатывают указанный запрос (и запрашивают данные, если они есть) и типично возвращают некоторые данныес кодом состояния, который указывает, была ли операция успешной.

С помощью Spring вы делаете что-то вроде этого:

@GetMapping("/students")
ResponseEntity<List<Student>> listStudents() {
    List<Student> stds = getStudents(); // call some service or DB
    return new ResponseEntity<>(stds, HttpStatus.OK);
}

Когда вы делаете запрос GET для / студентов, Spring делегирует обработкузапроса к методу listStudents, который будет получать студентов и возвращать данные.

API REST обычно работают с JSON, поэтому список студентоввозвращение будет сериализовано в список json.

Если вы хотите настроить структуру json учащегося, вы можете использовать Jackson:

public class Student {
    @JsonProperty("cool_name") private String name;
// getters and setter
}

API остальных не работает с представлениями или JSP.Они обычно работают с http-запросами и ответами.

Если вы работаете с Spring MVC вместо Spring Boot, проверьте эту статью: https://viralpatel.net/blogs/spring-4-mvc-rest-example-json/

Если вы можете использовать Spring Boot (который яНастоятельно рекомендуем), проверьте это: https://spring.io/guides/gs/rest-service/

Вы также должны аннотировать свои контроллеры REST с помощью @RestController, чтобы они автоматически обрабатывали вызовы покоя.

Надеюсь, что это помогает и приветствуется переполнение стека

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...