Git Product home page Git Product logo

spring-blog-assignment's Introduction

Hi there ๐Ÿ‘‹! I'm a BackEnd Developer.

  • Visit my portfolio at here

Anurag's GitHub stats


๐Ÿ’ช Skills

Programming Languages & Frameworks

ย  ย 

Databases

ย  ย 

Tools and Platforms

ย 

Collaboarotion & Version Control

ย  ย  ย 


๐Ÿ’โ€โ™€๏ธ How to get in touch with me

ย 



Hits

spring-blog-assignment's People

Contributors

jisoopyo avatar

Watchers

 avatar

spring-blog-assignment's Issues

๋Œ“๊ธ€ ์ข‹์•„์š” ๊ธฐ๋Šฅ

  • ์‚ฌ์šฉ์ž๋Š” ์„ ํƒํ•œ ๋Œ“๊ธ€์— '์ข‹์•„์š”'๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฏธ '์ข‹์•„์š”'ํ•œ ๋Œ“๊ธ€์— ๋‹ค์‹œ '์ข‹์•„์š”' ์š”์ฒญ์„ ํ•˜๋ฉด '์ข‹์•„์š”'๋ฅผ ํ–ˆ๋˜ ๊ธฐ๋ก์ด ์ทจ์†Œ๋ฉ๋‹ˆ๋‹ค.

  • ์š”์ฒญ์ด ์„ฑ๊ณตํ•˜๋ฉด Client๋กœ ์„ฑ๊ณตํ–ˆ๋‹ค๋Š” ๋ฉ”์‹œ์ง€, ์ƒํƒœ์ฝ”๋“œ ๋ฐ˜ํ™˜ํ•˜๊ธฐ

  • ๋Œ“๊ธ€ ์ˆ˜์ •, ๋Œ“๊ธ€ ์กฐํšŒ, ๋Œ“๊ธ€ ๋“ฑ๋ก ์‹œ์— ๋Œ“๊ธ€ ๋ฐ˜ํ™˜ํ•˜๋ฉด์„œ ์ข‹์•„์š” ๊ฐœ์ˆ˜๋„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ

Post ๊ด€๋ จ ํด๋ž˜์Šค๋“ค ์ˆ˜์ •

  • Post, User Entity ๊ด€๊ณ„์—์„œ Post๊ฐ€ User์˜ id๋ฅผ FK๋กœ ์ฐธ์กฐํ•˜๊ฒŒ๋” ์ˆ˜์ •.
  • PostController์—์„œ ๋ฐ›๋Š” ์š”์ฒญ ์ค‘์— ์ „์ฒด ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก ์กฐํšŒ์™€ ์„ ํƒ ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก ์กฐํšŒ์— ๋Œ€ํ•ด์„œ ์ธ์ฆ์„ ๋ฐ›์ง€ ์•Š์•„๋„ ๋˜๊ฒŒ๋” ์ˆ˜์ •.
  • ์ด์— ๋”ฐ๋ผ service, controller, entity ๋“ฑ ์ˆ˜์ • ํ•„์š”.

ํ…Œ์ŠคํŠธ ํ•ด๋ด์•ผ ํ•  ๊ฒƒ

  • Post ๊ธฐ๋ก
    -> ํšŒ์› ๊ฐ€๋Šฅ & ๊ด€๋ฆฌ์ž ๊ฐ€๋Šฅ & ๋น„ํšŒ์› ๋ถˆ๊ฐ€๋Šฅ
  • Post ์ˆ˜์ • ์‚ญ์ œ
    -> ์ž‘์„ฑ์ž ๊ฐ€๋Šฅ & ๊ด€๋ฆฌ์ž ๊ฐ€๋Šฅ & ๋น„ํšŒ์› ๋ถˆ๊ฐ€ & ์ž‘์„ฑ์ž, ๊ด€๋ฆฌ์ž ์™ธ ํšŒ์› ๋ถˆ๊ฐ€
  • ์„ ํƒํ•œ ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ ๋ฐ ์ „์ฒด ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก ์กฐํšŒ
    -> ํšŒ์›, ๋น„ํšŒ์›, ๊ด€๋ฆฌ์ž ๋ชจ๋‘ ๊ฐ€๋Šฅ(์ธ์ฆ ๋ฐ›๋Š”์ง€ ์•ˆ ๋ฐ›๋Š”์ง€ ํ…Œ์ŠคํŠธ)

Comment ๊ธฐ๋Šฅ ์ถ”๊ฐ€

  • Comment Entity, CommentController, CommentService, CommentRepository ์ถ”๊ฐ€

  • ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒํ•  ๋•Œ ๊ฒŒ์‹œ๊ธ€์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€๋“ค ๊ฐ™์ด ์กฐํšŒํ•˜๊ฒŒ๋” ์ˆ˜์ •.
    -> Post Entity์™€ PostResonseDto ์ˆ˜์ •

  • ๋Œ“๊ธ€ ์ž‘์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„
    -> ๋Œ“๊ธ€ ์ž‘์„ฑ : DB์— ํฌ์ŠคํŠธ ์ €์žฅ ์œ ๋ฌด ํ™•์ธ
    -> ๋Œ“๊ธ€ ์ˆ˜์ •, ์‚ญ์ œ : DB์— ๋Œ“๊ธ€ ์ €์žฅ ์œ ๋ฌด ํ™•์ธ
    -> ๊ด€๋ฆฌ์ž์™€ ์ž‘์„ฑ์ž๋งŒ ๋Œ“๊ธ€ ์ˆ˜์ •, ์‚ญ์ œ ๊ฐ€๋Šฅ

ํ”„๋กœ์ ํŠธ ํ”ผ๋“œ๋ฐฑ - ์ž‘์„ฑ์ž: ์ด์Šน์€ ํŠœํ„ฐ

Overview

  • issue ๋‹จ์œ„๋กœ ๋ธŒ๋žœ์น˜ ๊ด€๋ฆฌํ•˜์‹œ๋Š” ๋ถ€๋ถ„์ด ์ธ์ƒ์ ์ž…๋‹ˆ๋‹ค ๐Ÿ‘

#13 (comment) ๊ด€๋ จ

  • ํ˜„์žฌ ๊ตฌ์„ฑํ•ด์ฃผ์‹  ํŒจํ‚ค์ง€ ๊ตฌ์กฐ๋„ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.
  • ์ค‘์š”ํ•œ ์ ์€ ์ด์ „์— ํ˜„์›… ํŠœํ„ฐ๋‹˜๊ป˜์„œ ์˜ฌ๋ ค์ฃผ์‹  ๊ฒƒ์ฒ˜๋Ÿผ, ๋„๋ฉ”์ธ์— ์ž…๊ฐํ•ด ํŒจํ‚ค์ง€๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.
  • ํ˜„ ํ”„๋กœ์ ํŠธ๋Š” ๋ณต์žก๋„๊ฐ€ ๋งŽ์ด ๋†’์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ์„ธ์„ธํ•˜๊ฒŒ ๋ถ„๋ฅ˜ํ•  ํ•„์š”๊ฐ€ ์—†์ง€๋งŒ ํ”„๋กœ์ ํŠธ ๋ณต์žก๋„๊ฐ€ ์˜ฌ๋ผ๊ฐ€๋ฉด user.controller / user.entity์™€ ๊ฐ™์€ ํ˜•ํƒœ๋‚˜, entity.user / entitiy.post์™€ ๊ฐ™์€ ํ˜•ํƒœ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

#12 ๊ด€๋ จ

  • ๊ฐœ์ธ์ ์œผ๋กœ AOP๋ณด๋‹ค ์ฐธ๊ณ  ์ž๋ฃŒ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ exception handlingํ•˜๋Š” ๊ฑธ ์„ ํ˜ธํ•˜๊ธด ํ•ฉ๋‹ˆ๋‹ค.

  • HTTP Status Code๋กœ๋„ ๋งŽ์€ ์ •๋ณด๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š”๋ฐ์š”. ์ฐธ๊ณ  ์ž๋ฃŒ๋ฅผ ํ†ตํ•ด ์—๋Ÿฌ ์ฝ”๋“œ๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ๋„ ์ถ”์ฒœ ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

  • ERD ์ฒจ๋ถ€ํ•ด์ฃผ์‹  ๊ฒƒ์„ ๋ณด๋ฉด likes ํ…Œ์ด๋ธ”์— ํŠน์ • id ๊ด€๋ จ row์ˆ˜๋ฅผ ๊ตฌํ•จ์œผ๋กœ์จ count๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋ณ„๋„ ์ปฌ๋Ÿผ์œผ๋กœ ์ค‘๋ณต ์ €์žฅํ•ด์ฃผ์‹  ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

    • ๋ฌผ๋ก , ๋ฐ˜์ •๊ทœํ™”๋ฅผ ์˜๋„ํ•˜์…จ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, orm์— ๋”ฐ๋ผ ๋ฐ˜์ •๊ทœํ™”๋ฅผ ๊ถŒ์žฅํ•˜์ง€ ์•Š๊ธฐ๋„ ํ•ด์„œ ์œ ์˜ํ•ด์ฃผ์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค!
  • ์ง€๊ธˆ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ฅผ ์ž˜ ์ž‘์„ฑํ•ด์ฃผ์‹œ๋Š” ํŽธ์ด๊ธด ํ•œ๋ฐ, AngularJS commit conventions ์ด ํ˜„์žฌ ์ปค๋ฐ‹ํ•˜์‹œ๋Š” ์Šคํƒ€์ผ๊ณผ ์œ ์‚ฌํ•ด์„œ ์ฐธ๊ณ ํ•ด๋ณด์‹œ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์„ธ๋ถ€ ํ”ผ๋“œ๋ฐฑ์€ ์•„๋ž˜ ์ฝ”๋ฉ˜ํŠธ์— ๋‚จ๊ฒจ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ™‡

๊ฒŒ์‹œ๊ธ€ ์ข‹์•„์š” ๊ธฐ๋Šฅ

  • ์‚ฌ์šฉ์ž๋Š” ์„ ํƒํ•œ ๊ฒŒ์‹œ๊ธ€์— '์ข‹์•„์š”'๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฏธ '์ข‹์•„์š”'ํ•œ ๊ฒŒ์‹œ๊ธ€์— ๋‹ค์‹œ '์ข‹์•„์š”' ์š”์ฒญ์„ ํ•˜๋ฉด '์ข‹์•„์š”'๋ฅผ ํ–ˆ๋˜ ๊ธฐ๋ก์ด ์ทจ์†Œ๋œ๋‹ค.
  • ์š”์ฒญ์ด ์„ฑ๊ณต๋˜๋ฉด Client๋กœ ์„ฑ๊ณตํ–ˆ๋‹ค๋Š” ๋ฉ”์‹œ์ง€, ์ƒํƒœ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

+) ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ ์‹œ ์ข‹์•„์š” ๊ฐœ์ˆ˜๋„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

WebSecurityConfig ์„ค์ •

  • SpringSecurity๋ฅผ ์ด์šฉํ•˜์—ฌ WebSecurityConfig๋ฅผ ์„ค์ •ํ•œ๋‹ค.
  • ๊ธฐ์กด์— ์“ฐ๋˜ PasswordConfig ๊ธฐ๋Šฅ์„ WebSecurityConfig์— ๋„ฃ์–ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๊ธฐ์กด์— ์“ฐ๋˜ AuthFilter๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.(Security๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ)
  • Jwt๋ฅผ ์ฟ ํ‚ค์— ๋‹ด์•„์„œ ๋ณด๋‚ด๊ฑฐ๋‚˜ ๋ฐ›๋Š” ํ˜•์‹์ด ์•„๋‹ˆ๋ผ ํ—ค๋”์— ๋‹ด์•„์„œ ์ฃผ๊ณ ๋ฐ›๋Š” ์‹์œผ๋กœ ๋ฐ”๊พผ๋‹ค.
    --> JwtAuthenticationFilter, JwtAuthorizationFilter, UserDetailsImpl, UserDetailsServiceImpl ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ
  • ํฌ์ŠคํŠธ๋งจ์œผ๋กœ ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ ์š”์ฒญํ•ด๋ณด๊ธฐ
    --> JWT๊ฐ€ ํ—ค๋”์— ์ž˜ ๋‹ด๊ฒจ ์˜ค๋Š”์ง€ ํ™•์ธ, jwt๋ฅผ jwt,io์—์„œ ํ™•์ธํ•ด๋ณด๊ธฐ.

[Refactor] ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

  • AOP๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์˜ˆ์™ธ์ฒ˜๋ฆฌํ•˜๊ธฐ

  • ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
    -> ํ† ํฐ์ด ํ•„์š”ํ•œ API ์š”์ฒญ์—์„œ ํ† ํฐ์„ ์ „๋‹ฌํ•˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ์ •์ƒ ํ† ํฐ์ด ์•„๋‹ ๋•Œ๋Š” "ํ† ํฐ์ด ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค." ๋ผ๋Š” ์—๋Ÿฌ๋ฉ”์‹œ์ง€์™€ statusCode: 400์„ Client์— ๋ฐ˜ํ™˜ํ•˜๊ธฐ
    -> ํ† ํฐ์ด ์žˆ๊ณ , ์œ ํšจํ•œ ํ† ํฐ์ด์ง€๋งŒ ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๊ฒŒ์‹œ๊ธ€/๋Œ“๊ธ€์ด ์•„๋‹Œ ๊ฒฝ์šฐ์—๋Š” โ€œ์ž‘์„ฑ์ž๋งŒ ์‚ญ์ œ/์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.โ€๋ผ๋Š” ์—๋Ÿฌ๋ฉ”์‹œ์ง€์™€ statusCode: 400์„ Client์— ๋ฐ˜ํ™˜ํ•˜๊ธฐ
    -> DB์— ์ด๋ฏธ ์กด์žฌํ•˜๋Š” username์œผ๋กœ ํšŒ์›๊ฐ€์ž…์„ ์š”์ฒญํ•œ ๊ฒฝ์šฐ "์ค‘๋ณต๋œ username ์ž…๋‹ˆ๋‹ค." ๋ผ๋Š” ์—๋Ÿฌ๋ฉ”์‹œ์ง€์™€ statusCode: 400์„ Client์— ๋ฐ˜ํ™˜ํ•˜๊ธฐ
    -> ๋กœ๊ทธ์ธ ์‹œ, ์ „๋‹ฌ๋œ username๊ณผ password ์ค‘ ๋งž์ง€ ์•Š๋Š” ์ •๋ณด๊ฐ€ ์žˆ๋‹ค๋ฉด "ํšŒ์›์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."๋ผ๋Š” ์—๋Ÿฌ๋ฉ”์‹œ์ง€์™€ statusCode: 400์„ Client์— ๋ฐ˜ํ™˜ํ•˜๊ธฐ
    -> ํšŒ์›๊ฐ€์ž… ์‹œ username๊ณผ password์˜ ๊ตฌ์„ฑ์ด ์•Œ๋งž์ง€ ์•Š์œผ๋ฉด ์—๋Ÿฌ๋ฉ”์‹œ์ง€์™€ statusCode: 400์„ Client์— ๋ฐ˜ํ™˜ํ•˜๊ธฐ

  • Service์—์„œ ๊ฒน์น˜๋Š” ์˜ˆ์™ธ๊ฐ€ ๋งŽ๋‹ค. ์ž˜ ํ•ธ๋“ค๋ง ํ•ด์„œ ๋ฐ–์œผ๋กœ ๋นผ๋ณผ ๊ฒƒ

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.