본문 바로가기
Spring

단축 URL API 설계 (네이버)

by SuldenLion 2022. 11. 9.
반응형

설계 :

 

[   Naver API   ]             ← request              [   Spring Boot App   ]                   ← CRUD →         [  DB  ]

   (단축 URL)                response →               

 

                                                          response ↓            ↑ request

                   

                                                                          [   User   ]

 

 

[  ShortUrlController  ]-----[  ShortUrlService  ]-----[  ShortUrlDAO  ]-----[  ShortUrlRepository  ]

                                                       |                                   |

                                     [  ShortUrlServiceImpl  ]    [  ShortUrlDAOImpl  ]

 

Controller 설계 (ShortUrlController) :

Field NaverClientID                     =>                   property

Field NaverClientSecret              =>                   property

@Autowired ShortUrlService

Method : generateShortUrl(String url)

Method : getShortUrl(String url)

Method : updateShortUrl(String url)

Method : deleteShortUrl(String url)

 

Service 설계 (ShortUrlService) :

@Autowired ShortUrlDAO

Method : generateShortUrl(String NaverClientID, String NaverClientSecret, String url)

- naver api로 shorturl 요청하여 값 받음

Method : getShortUrl(String NaverClientID, String NaverClientSecret, String url)

- DB 조회 후 shorturl 리턴, DB에 값이 없다면 generateShortUrl 호출하여 값을 리턴

Method : updateShortUrl(String NaverClientID, String NaverClientSecret, String url)

Method : deleteShortUrl(String NaverClientID, String NaverClientSecret, String url)

 

@Autowired ShortUrlRepository

Method : saveShortUrl(ShortURLEntity shortUrlEntity)

- repository로 entity 객체를 넘겨 DB에 저장

Method : getShortUrl(String originalUrl)

- DB 조회 후 shorturl 리턴

Method : getOriginalUrl(String shortUrl)

- DB 조회 후 originalUrl 리턴

Method : updateShortUrl(String NaverClientID, String NaverClientSecret, String url)

Method : deleteShortUrl(String NaverClientID, String NaverClientSecret, String url)

 

Entity 설계

(ShortUrlEntity                 ---extends →            BaseEntity) :

@Id

@GeneratedValue                                           createdAt (생성 일시)

Field id                                                             createdBy (생성 주체)

                                               +

@Column                                                        updatedAt (업데이트(갱신) 일시)

Field orgUrl                                                     updatedBy (업데이트(갱신) 주체)

 

@Column

Field shortUrl

반응형

댓글