-
[Vapor] Pagination 사용해보기Programing/Vapor 2020. 6. 19. 16:33
안녕하세요~! 5anniversary입니다!!!!
다들 서버에서 데이터들을 받아오는 경우에 어떻게 받아오시나요??
기본적으로 간단한 데이터들의 경우에는 그냥 받아오는 경우가 많은데요~~!
게시글이나 100개 혹은 그 이상의 데이터들의 경우에는 Pagenation을 통해서 원하는 데이터들만을 뽑아오는게 좋다고 생각합니다.
이런경우에 사용할 Pagination은 어떻게 만드는지에 대해서 알아볼게요!!
저는 Querybuilder를 extension으로 새로운 query(page)로 만들어 처리를 합니다
한 번 코드로 알아보자면
public func query(page: Int) -> Self { let aPage = page < 1 ? 1 : page // page를 받아와 let start = (aPage - 1) * pageCount // 미리 정해둔 pageCount와 곱해 시작되는 row를 지정합니다. let end = start + pageCount // 끝나는 row도 지정해야겠죠?? let ran: Range = start..<end // ran라는 range를 정해줍니다. return self.range(ran) // 쿼리중에 해당되는 range만을 반환해줍니다. }
이후에 이 쿼리문을 사용하는 코드를 알아보자면
func ArticleListHandler(_ req: Request) throws -> Future<Response> { return Article .query(on: req) .query(page: req.page) .all() .flatMap({ (article) in return try ResponseJSON<[Article]>(data: article).encode(for: req) }) }
와 같이 작성을 해주신다면
http://localhost:8000/api?page=1
를 get 메소드로 날려주신다면??
원하는 row갯수로 나눠져 나오게 됩니다!!
물론 page의 값을 계속해서 올리며 요청을 해줘야겠죠??
'Programing > Vapor' 카테고리의 다른 글
[Vapor] SQL 문으로 쿼리문 사용하기 (0) 2020.06.19 [Vapor] Rest API 만들기 - 3 (GET) (0) 2020.05.28 [Vapor] Rest API 만들기 - 2 (POST) (0) 2020.05.22 [Vapor] Rest API 만들기 - 1 (0) 2020.05.22 💧Vapor💧 Heroku MySQL DB 사용하기 (0) 2020.05.11