-
[iOS] Firebase로 REST API 공부하기(+ Postman, Alamofire) - 2. POST공부기록/iOS 2021. 9. 1. 01:05

출처 - https://cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.documents/createDocument 문서를 찾아보니 Document를 만들때 POST를 사용한다.
GET과 다른점은 Query parameter로 documentId를 받고 이게 생성될 Document의 이름이 된다.
그럼 기본 URL https://firestore.googleapis.com/v1에
Path Parameter인 projects/fir-restapi-8d2ba/databases/(default)/documents/UserCollection을 붙이고
Query Parameter로 ?documentId=새로운 DocumentId를 붙이면 된다.

먼저 documentId를 NewUserByPostman로 해서 포스트맨으로 생성해봤다.
이 때 Body는 "fields"만 보내면 된다!
Response를 보면 name과 createTime, updateTime은 알아서 만들어진다.

Database를 보면 NewUserByPostman이라는 문서가 생겼고 필드도 포스트맨에서 작성한대로 만들어졌다.

xcode에서는 createDocumentData라는 함수를 만들어서 생성했다.
var urlComponent = URLComponents(string: dataURL) let documentID = URLQueryItem(name: "documentId", value: documentID) urlComponent?.queryItems = [documentID] guard let postURL = urlComponent?.url else { print("postURL fail") return }여기는 Query Parameter인 documentId를 추가해주는 부분이다.
만들어둔 dataURL을 URLComponents로 만들고 URLQueryItem을 만들어 추가해준다.
그런 다음 urlComonent의 url을 이용한다. Optional이므로 옵셔널 바인딩을 해준다.
let parameter = APIResponse( fields: Fields( name: Name( stringValue: name), email: Email( stringValue: email), nickname: Nickname( stringValue: nickname) ) )함수의 파리미터로 받은 name, email, nickname을 이용해서 APIResponse 인스턴스를 만든다.
Alamofire에서 이거를 그대로 이용한다. 이 부분을 몰라서 해멨었다.
AF.request(postURL, method: .post, parameters: parameter, encoder: JSONParameterEncoder.default).responseJSON { response in print("\n\n\n Getting Document Data... \n\n\n") if let error = response.error { print(error) } else if let data = response.data { print(try! JSONSerialization.jsonObject(with: data, options: .allowFragments)) guard let apiResponse = try? JSONDecoder().decode(APIResponse.self, from: data) else { print("decode fail") return } print(" name : \(apiResponse.fields.name.stringValue)") print(" nickname: \(apiResponse.fields.nickname.stringValue)") print(" email: \(apiResponse.fields.email.stringValue)") print("\n\n\n Finished") } } }parameter를 APIResponse 인스턴스 그대로 사용하고
encoder를 JSONParameterEncoder.default를 사용하면 된다!!

xcode에서는 documentId를 NewUserByXcode로 해서 문서를 생성했다.


결과는 작성한대로 잘 생성됐다.
POST에 대해서도 공부해봤다!
'공부기록 > iOS' 카테고리의 다른 글
[iOS] Firebase로 REST API 공부하기(+ Postman, Alamofire) - 4. DELETE (0) 2021.09.01 [iOS] Firebase로 REST API 공부하기(+ Postman, Alamofire) - 3. PATCH (0) 2021.09.01 [iOS] Firebase로 REST API 공부하기(+ Postman, Alamofire) - 1. GET (0) 2021.09.01 [iOS] 테이블뷰의 contentOffset (0) 2021.05.25 [iOS] 파일명으로 JSONDecoder 사용하기 (0) 2021.04.25