-
[Vapor] Rest API 만들기 - 1Programing/Vapor 2020. 5. 22. 03:06
안녕하세요 5anniversary 입니다~!
이전 시간의 포스팅에 이어서, 이번에는 Vapor를 통해 데이터베이스에 접근해 데이터들을 생성, 수정, 삭제해보는 시간을 가져보겠습니다~!
projectName/ ├── Package.swift ├── Sources/ │ ├── App/ │ │ ├── Controllers/ │ │ │ └── UserController.swift │ │ ├── Utility/ │ │ │ └── ResponseJSON.swift │ │ ├── Model/ │ │ │ └── User.swift │ │ └── System/ │ │ ├── app.swift │ │ ├── boot.swift │ │ ├── boot.swift │ │ └── routes.swift │ └── Run/ │ └── main.swift ├── Tests/ ├── Resources/ ├── Public/ ├── Dependencies/ └── Products/
우선 제가 사용하는 프로젝트 구조입니다.
이렇게 파일을 하나씩 생성해주세요.
오늘은 Response 값을 적당히 가공해 보내주기 위한 ResponseJSON파일에 대한 설명을 해드리겠습니다.
{ "status":200, "message":"요청이 성공했습니다.", "data":[{ "id":1, "name":"5anniversary" }] }
오늘 ResponseJSON파일을 만드는 이유는 위와 같이 JSON 형식으로 response값을 보내줄 때
status값과 message를 정해놓고 원하는 경우에 편하게 사용하기 위해 만드는 의도임을 알아주셨으면 합니다!
enum ResponseStatus:Int,Content { case ok = 200 case error = 400 case unknown = 500 var desc : String { switch self { case .ok: return "요청이 성공했습니다." case .error: return "요청이 실패했습니다." case .unknown: return "에러의 원인을 모릅니다. (서버 에러)" } } }
먼저 ResponseStatus로 원하는 상태 코드를 작성해주시면 됩니다.
위 코드는 간단하게 200, 400, 500에 해당하는 상태 코드만 작성한 뼈대 코드입니다.
상태 코드는 정해진 규칙이 있기 때문에 HTTP 상태코드 이 문서를 보고 적절한 상태 코드를 작성해주시면 됩니다.
다음으로
import Vapor struct ResponseJSON<T: Content>: Content{ private var status: ResponseStatus private var message: String private var data: T? init(data: T) { self.status = .ok self.message = status.desc self.data = data } init(status:ResponseStatus = .ok) { self.status = status self.message = status.desc self.data = nil } init(status:ResponseStatus = .ok, message: String = ResponseStatus.ok.desc) { self.status = status self.message = message self.data = nil } init(status:ResponseStatus = .ok, message: String = ResponseStatus.ok.desc, data: T?) { self.status = status self.message = message self.data = data } }
ResponseJSON을 작성해주세요.
ok 일경 우와 아닌 경우, 그리고 data가 있는 경우와 아닌 경우 맞춰서 작성이 되어있습니다.
그리고 굳이 data를 반환해줄 필요가 없는 경우가 있기 때문에
struct Empty: Content {}
해당하는 경우에 맞춰 위와 같이 Empty 구조체를 작성해주세요.
이번 시간에는 프로젝트의 구조를 알아보고, 클라이언트 측에서 처리하기 간편하게 하기 위한 ResponseJSON.swift를 작성해보았고 다음 시간에는 이 것을 활용해보는 시간이 될 거예요~~
'Programing > Vapor' 카테고리의 다른 글
[Vapor] Rest API 만들기 - 3 (GET) (0) 2020.05.28 [Vapor] Rest API 만들기 - 2 (POST) (0) 2020.05.22 💧Vapor💧 Heroku MySQL DB 사용하기 (0) 2020.05.11 💧Vapor💧 Swift Server, Heroku 배포하기 (6) 2020.05.10 💧Vapor💧 MySQL DB에 연결하기 (0) 2020.05.08