안녕하세요!
이 기사의 주요 목표는 초보 개발자가 Spring Boot에서 HTTP 요청을 처리하도록 돕는 것입니다.
?예제에서는 MVC 앱에 필요한 모든 코드를 다루지 않고 데이터 처리의 차이점을 보여주기 위한 일부 부분만 다루었습니다.
최근에 저는 같은 반 학생들과 함께 엔지니어링 프로젝트를 진행하고 있습니다. 우리는 "오래된" 코드베이스를 기반으로 구축해야 했기 때문에 새로운 기술 스택을 소개했습니다. 코드베이스에는 Java, Spring Boot 및 Thymeleaf가 포함되었습니다. 이 프로젝트의 목표는 인기 있는 소셜 네트워크의 복제품을 만드는 것이었습니다.
핵심 기능은 매우 일반적이었습니다. 사용자는 게시물을 작성할 수 있고 다른 사람들은 해당 게시물에 댓글을 달거나 좋아요를 누를 수 있습니다.
시각적인 역동성을 추가하기 위해 우리는 Thymeleaf를 JavaScript와 결합하기로 결정했습니다. 이렇게 하면 페이지에 게시물이 표시될 때 사용자가 클릭하여 좋아요를 누르거나 댓글을 달 수 있으며 변경 사항은 백엔드에서 처리됩니다. 이 시점에서 모든 표준 CRUD 작업에 대해 서버에 요청을 보내는 JavaScript 함수가 필요했습니다.
문제는 POST, PUT 또는 DELETE 메소드를 사용하여 어떻게 데이터를 서버에 적절하게 전달하는가였습니다. GET은 다소 명확하므로 GET에 대한 예제는 건너뜁니다.
가능한 방법은 다음과 같습니다.
URL 매개변수(PathVariable)
URL 예: HTTP://myapp.com/posts/1
적합 대상: 삭제, 넣기
사례: 백엔드에서 특정 엔터티와 작업합니다. 제 예에서는 단일 게시물입니다.
주석 예:
@DeleteMapping("/posts/{post_id}") public ResponseEntity<String> deletePost(@PathVariable("post_id") Long post_id) { // Some logic here... return ResponseEntity.ok("Deleted successfully"); }
해당 JS 코드 예시:
// Some pre-logic here to pass postId to the function, // or you can use const deletePost = async(postId)=>{} to pass postId directly const deletePost = async () => { // Some pre-checks and error handling go here... const requestOption = { method:'DELETE', headers:{ 'Content-type':'application/json' } }; await fetch(`/posts/${postId}`, requestOptions); // Some post-checks and error handling go here... }
양식 데이터(RequestParam)
URL 예: 편집용 HTTP://myapp.com/posts 또는 HTTP://myapp.com/posts/1
적합 대상: PUT, POST
사례: 하나 또는 두 개의 매개변수를 사용하여 엔터티를 생성하거나 업데이트합니다. 제 예에서는 게시물 내용(문자 메시지)입니다.
주석 예:
@PutMapping("/posts/{post_id}") public ResponseEntity<String> editPost(@PathVariable("post_id") Long post_id, @RequestParam("content") String content) { // Some logic goes here... return ResponseEntity.ok("Post updated successfully"); }
해당 JS 코드 예시:
// Some pre-logic here to pass postId and content to the function, // or you can use const deletePost = async(postId, updatedContent)=>{} to pass // them directly directly const updatePost = async ()=> { // Some pre-checks and error handling go here... const formData = new FormData(); formData.append("content",updatedContent); requestOptions = { method:'PUT', body: formData }; await fetch(`/posts/${postId}`,requestOptions); // Some post-checks and error handling go here... }
JSON 본문(RequestBody)
적합 대상: PUT, POST
사례: 복잡한 엔터티(예: 3개 이상의 매개변수가 있는 개체)를 생성하거나 업데이트하는 중입니다.
주석 예:
@PutMapping("/posts/{post_id}") public ResponseEntity<String> editPost(@PathVariable("post_id") Long post_id, @RequestBody Post post) { // Some logic goes here... // It requires the whole object to be passed. // After that it's possible to access values via getters of your object's model return ResponseEntity.ok("Post updated successfully"); }
해당 JS 코드 예시:
const updatePost = async ()=> { // Some pre-checks and error handling go here... requestOptions = { method:'PUT', headers: { 'Content-type':'application/json' }, body: JSON.stringify({'content':updatedContent}) }; await fetch(`/posts/${postId}`,requestOptions); // Some post-checks and error handling go here... }
이렇습니다. 도움이 되길 바랍니다.
건배!
위 내용은 Spring Boot에서 HTTP 요청 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!