[Node.js] Spring to Node : Controller 틀 짜기

E woo·2024년 7월 18일

Node.js

목록 보기
4/4
post-thumbnail

Controller

Node.js 에서도 Spring 과 달리 그리고 Django 와 같이 url 매핑을 하는 Router 와 서비스 로직을
수행 혹은 호출하는 Controller 2개로 나누어서 구현한다!

그렇기 때문에 우선 Controller 를 만들고 Service 로 만들고 Router 순으로 만들어보자!

  • Spring Controller
@RestController
@RequestMapping("/api/fix-extension")
@RequiredArgsConstructor
public class FixExtensionController {
    
    private final ExtensionService fixExtensionService;

	// 메서드에 따른 Controller 구분

	@PostMapping("/{extension}")
	public ResponseEntity<ExtensionResponse>enableFixExtension(@PathVariable String extension) {
		ExtensionRequest extensionRequest = ExtensionRequest.builder()
                .extension(extension)
                .build();
		ExtensionResponse response = fixExtensionService.addExtension(extensionRequest);
		return ResponseEntity.ok(response);
    }

	@DeleteMapping ("/{extension}")
	public ResponseEntity<ExtensionResponse> disableFixExtension(@PathVariable String extension) {
		ExtensionRequest extensionRequest = ExtensionRequest.builder()
                .extension(extension)
                .build();
		ExtensionResponse response = fixExtensionService.deleteExtension(extensionRequest);
		return ResponseEntity.ok(response);
    }

	@GetMapping
	public ResponseEntity<List<ExtensionResponse>> findAllFixExtension() {
		List<ExtensionResponse> responses = fixExtensionService.findAllEnabledExtensions();
		return ResponseEntity.ok(responses);
	}
}
  • FixExtensionController

export class fixExtensionController {

    // 서비스 인스턴스 생성

    getAllFixExtension = async (req, res, next) => {
        // 모든 고정 확장자 조회
    }

    enableFixExtension = async (req, res, next) => {
        // 고정 확장자 활성화
    }

    disableFixExtension = async (req, res, next) => {
        // 고정 확장자 비활성화
    }
}

URI 를 매핑 해줄 router 파일을 따로 구성하기 때문에 어노테이션으로 주소 매핑을 명시하는
Spring 의 Controller 와는 차이가 있다!

async 여담

그리고 오랜만에 본 async 키워드를 보자 궁금한게 많이 떠올라서 (그냥 까먹은..)
관련 내용을 좀 조사했다..ㅎ

Spring Boot 는 멀티 쓰레드 방식으로 내장 Tomcat 을 이용해 다중 요청을 처리한다.

그러나 Node.js 는 싱글 쓰레드이기 때문에 다중 요청 처리를 위해서는 비동기 함수의 사용이
필수적이다. 이러한 특성 때문에 async, await, Promise 등의 특성이 생긴 것이다!

(이렇게 Spring Boot 와 Node.js 그리고 Django 까지 각각의 다중 요청 방식과 특징은 이후
따로 공부해보자!)

그러면 이제 실제 비즈니스 로직을 수행할 서비스를 만들어보자!

profile
뒘벼

0개의 댓글