Perfect 미니 프로젝트 [1]
1. 프로젝트 개요
2. mongoDB 설치
3. 패키지 설치
우분투에 스위프트 설치를 시작으로 이후 두 포스팅에 걸쳐 퍼펙트에 대해 조금 알아보았습니다.
2017/04/03 - [Swift/Perfect] - 우분투(Ubuntu)에 스위프트 설치하기
2017/05/17 - [Swift/Perfect] - Perfect 시작하기
2017/05/24 - [Swift/Perfect] - Perfect 라우팅
이번 부터는 실질적으로 퍼펙트를 사용하여 작은 미니프로젝트를 해보려합니다.
이 감 말고요... 'ㅁ' 아하핳
프로젝트 개요
간단한 사진게시판을 위한 REST API 서버를 만들어보겠습니다.
API |
HTTP Method |
URI |
사진 게시물 등록 |
POST |
/article |
사진 게시물 목록 |
GET |
|
사진 게시물 수정 |
POST |
/article/{article_id} |
사진 게시물 삭제 |
DELETE |
|
사진 게시물 정보 가져오기 |
GET |
사진 게시물 등록
요청(Request)
- HTTP Method : POST
- Content-Type: multipart/form-data
매개변수 |
자료형 |
값의 범위/기본 값 |
비고 | 필수여부 |
image |
binary data |
|
이미지 데이터 | Y |
user_name | string |
| 사용자 이름 | Y |
description | string |
| 이미지 설명 | N |
title | string |
| 이미지 제목 | Y |
응답(Response)
Key |
자료형 |
비고 |
필수여부 |
article_id |
string |
업로드된 게시물 고유 식별자 |
Y |
image_url | string | 이미지 주소 | Y |
user_name | string | 사용자 이름 | Y |
description | string | 이미지 설명 | N |
title | string | 이미지 제목 | Y |
사진 게시물 목록
요청(Request)
- HTTP Method : GET
- Content-Type: application/json
매개변수 | 자료형 | 값의 범위/기본 값 | 비고 | 필수여부 |
page | integer | 0 | 조회하고자 하는 페이지 번호 | N |
user_name | string | 특정 사용자의 게시물만 받아오고자 할 때 | N | |
articles_per_page | integer | 1~100 / 10 | 각 페이지 당 게시물 수 | N |
응답(Response)
Key | 자료형 | 비고 | 필수여부 |
articles | json object array (string) | 게시물 정보 배열 | Y |
articles_per_page | integer | 각 페이지 당 게시물 수 | Y |
current_page | integer | 전송된 페이지 | Y |
total_page | integer | 전체 페이지 수 | Y |
articles item object 형태
Key | 자료형 | 비고 | 필수여부 |
image_url | string | 이미지 URL | Y |
user_name | string | 업로드한 사용자 이름 | Y |
description | string | 이미지 설명 | N |
title | string | 이미지 제목 | Y |
article_id | string | 게시물 고유 식별자 | Y |
사진 게시물 수정
요청(Request)
- HTTP Method : POST
- Content-Type: multipart/form-data
매개변수 | 자료형 | 값의 범위/기본 값 | 비고 | 필수여부 |
image | binary data | 이전 데이터 | 이미지 데이터 | N |
user_name | string | 사용자 이름이 이전 사용자 이름과 일치하지 않으면 수정에 실패 | Y | |
description | string | 이전 데이터 | 이미지 설명 | N |
title | string | 이전 데이터 | 이미지 제목 | N |
응답(Response)
Key | 자료형 | 비고 | 필수여부 |
article_id | string | 수정된 게시물 고유 식별자 | Y |
image_url | string | 이미지 주소 | Y |
user_name | string | 사용자 이름 | Y |
description | string | 이미지 설명 | N |
title | string | 이미지 제목 | Y |
사진 게시물 삭제
요청(Request)
- HTTP Method : DELETE
- Content-Type: application/json
매개변수 없음
응답(Response)
Key | 자료형 | 비고 | 필수여부 |
article_id | string | 삭제된 게시물 고유 식별자 | Y |
사진 게시물 정보 가져오기
요청(Request)
- HTTP Method : GET
- Content-Type: application/json
매개변수 없음
응답(Response)
매개변수 | 자료형 | 비고 | 필수여부 |
image_url | string | 이미지 URL | Y |
user_name | string | 업로드한 사용자 이름 | Y |
description | string | 이미지 설명 | N |
title | string | 이미지 제목 | Y |
article_id | string | 게시물 고유 식별자 | Y |
이 정도를 구현해 볼건데요, 데이터베이스가 필요할테니 쓸만한 데이터베이스가 무엇이 있을지 찾아봅니다.
현재(2017년 6월) 퍼펙트에서 공식적으로 제공하는 데이터베이스 커넥터 목록입니다.
- SQLite
- MySQL
- MariaDB
- PostgreSQL
- FileMaker
- MongoDB
- Working with BSON
- Apache CouchDB
- LDAP
- Kafka
- Mosquitto
- ZooKeeper
- Hadoop
와우... 많네요!! 저는... 몽고디비를 써봐야겠습니다.
mongoDB 설치
그러려면 먼저 mongoDB를 설치해봐야겠지요.
설치방법은 아래 링크에 친절히 나와있으니 참고하시면 되겠습니다 :)
- macOS : https://docs.mongodb.com/master/tutorial/install-mongodb-on-os-x/
- ubuntu : https://docs.mongodb.com/master/tutorial/install-mongodb-on-ubuntu/
퍼펙트에서 몽고디비를 사용하기 위해서는 mongo-c 라이브러리를 사용해야합니다.
먼저, mongo-c 드라이버를 설치합니다. mongo-c와 관련된 설명은 Perfect의 문서를 참고하셔도 좋습니다.
macOS
HomeBrew를 먼저 설치(링크)하신 후, 터미널에서 아래 명령어를 입력합니다.
> brew install mongo-c-driver
ubuntu
아래 명령어를 입력합니다.
> sudo apt-get install libmongoc
패키지 설치
그리고 이제 새로운 프로젝트를 시작하기 위해서 프로젝트를 진행하길 원하는 위치에서 프로젝트 폴더를 생성합니다. 프로젝트 폴더 이름은 ImageBoard라고 하겠습니다.
> mkdir ImageBoard > cd ImageBoard
그 다음 스위프트 패키지 매니저를 통해 패키지 초기화를 합니다. 스위프트 패키지 매니저는 지난 포스트[우분투(Ubuntu)에 스위프트 설치하기]에서 설치했었죠?
> swift package init --type executable
swift package init 명령어를 실행 후 폴더에 생성된 Package.swift 파일을 열어서 Perfect 패키지 의존성을 추가합니다.
> vi Package.swift
Package.swift 파일에 아래 코드를 작성합니다. (우리는 새로운 프로젝트를 만들면서 함께 mongo-c 패키지도 설치할거예요.)
import PackageDescription let package = Package( name: "ImageBoard", targets: [], dependencies: [ .Package(url: "https://github.com/PerfectlySoft/Perfect-HTTPServer.git", versions: Version(0,0,0)..<Version(10,0,0)), .Package(url:"https://github.com/PerfectlySoft/Perfect.git", versions: Version(0,0,0)..<Version(10,0,0)), .Package(url:"https://github.com/PerfectlySoft/Perfect-MongoDB.git", versions: Version(0,0,0)..<Version(10,0,0)) ] )
위 패키지 설명은 Perfect HTTP Sever, Perfect, Perfect MongoDB 커넥터 패키지를 버전 0부터 10까지 중 최신 버전을 가져오도록 합니다. (현재시점으로 모두 2.x.x 버전)
> swift package update
> swift package generate-xcodeproj
by yagom
facebook : http://www.facebook.com/yagomSoft
facebook group : https://www.facebook.com/groups/yagom
p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.
RSS Feed 받기
↓↓↓ 블로거에게 공감은 큰 힘이 됩니다 ↓↓↓
'Swift > Perfect' 카테고리의 다른 글
사진 게시판 API 만들기 [3] (0) | 2017.08.09 |
---|---|
사진 게시판 API 만들기 [2] (0) | 2017.07.11 |
Perfect 라우팅 (0) | 2017.05.24 |
Perfect 시작하기 (0) | 2017.05.17 |
우분투(Ubuntu)에 스위프트 설치하기 (2) | 2017.04.03 |