인프런 워밍업 클럽 스터디 3기 - Backend <3주 발자국>

package com.example.portfolio.presentation.controller

import com.example.portfolio.presentation.dto.*
import com.example.portfolio.presentation.service.PresentationService
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController

@RestController
@RequestMapping("/api")
class PresentationApiController(
    private val presentationService: PresentationService

) {

    // rest controller이기 때문에 httml response body에 리턴한다.
    @GetMapping("/test")
    //== @RequestMapping(method = [RequestMethod.GET], name = "/test")
    // 이 외에도 postMappring과 PutMapping이 존재한다.
    fun test(): String {
        return "OK"
    }

    @GetMapping("/v1/introductions")
    fun getIntroductions(): List<IntroductionDTO> {
        // 중요한 작업들은 서비스에서 다 해준다.
        return presentationService.getIntroductions()
    }

    @GetMapping("/v1/links")
    fun getLinks(): List<LinkDTO> {
        return presentationService.getLinks()
    }


    @GetMapping("/v1/resume")
    fun getResume(): ResumeDTO {
        return presentationService.getResume()
    }
    @GetMapping("/v1/projects")
    fun getProjects(): List<ProjectDTO> {
        return presentationService.getProjects()
    }


    @GetMapping("/v1/articles")
    fun getArticles(): List<ArticleDTO> {
        return presentationService.getArticles()
    }


}
package com.example.portfolio.presentation.repository

import com.example.portfolio.domain.entity.*
import com.example.portfolio.domain.repository.*
import org.springframework.stereotype.Repository
import java.security.PrivateKey

@Repository
class PresentationRepository(
    private val achievementRepository: AchievementRepository,
    private val introductionRepository: IntroductionRepository,
    private val linkRepository: LinkRepository,
    private val skillRepository: SkillRepository,
    private val projectRepository: ProjectRepository,
    private val experienceRepository: ExperienceRepository,

    private val articleRepository: ArticleRepository
) {
    fun getActiveAchivements(): List<Achievement> {
        return achievementRepository.findAllByIsActive(true)
    }

    fun getActiveExperiences(): List<Experience> {
        return experienceRepository.findAllByIsActive(true)
    }

    fun getActiveIntroductions(): List<Introduction> {
        return introductionRepository.findAllByIsActive(true)
    }
    fun getActiveLinks(): List<Link> {
        return linkRepository.findAllByIsActive(true)
    }
    fun getActiveProjects(): List<Project> {
        return projectRepository.findAllByIsActive(true)
    }
    fun getActiveSkills(): List<Skill> {
        return skillRepository.findAllByIsActive(true)
    }

    fun getArticles(): List<Article> {
        return articleRepository.findAll()
    }

    fun setArciels() {

    }
}

 

package com.example.portfolio.presentation.interceptor

import org.springframework.context.annotation.Configuration
import org.springframework.web.servlet.config.annotation.InterceptorRegistry
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer


@Configuration
class PresentationInterceptorConfiguration(
    private val presentationInterceptor: PresentationInterceptor
) :WebMvcConfigurer {

    override fun addInterceptors(registry: InterceptorRegistry) {
        registry.addInterceptor(presentationInterceptor)
            .addPathPatterns("/**")
            .excludePathPatterns("/assets/**", "/css/**", "/js/**", "/admin/**", "h2**", "/favicon.ico", "/error")
    }
}

 

 

느낀 점

프리젠테이션 부분에서 화면과 인터셉터 설계를 하면서 아직 화면 구성과 데이터 조작에 어려움을 느껴서 진도를 많이 못나갔다. 지금부터 복습 다시하면서 천천히 자기서으로 만들어야 한다는 시간을 가져야 겠다고 생각했다.

댓글을 작성해보세요.


채널톡 아이콘