Swift에서의 네트워킹은 URLSession을 통해 처리되며, URLRequest를 사용하여 요청을 생성하고, URLSessionDataTask를 통해 요청을 실행
struct Memo: JSON 데이터를 매핑할 구조체.
- id: 메모의 고유 ID (옵셔널).
- content: 메모의 내용.
- timestamp: 메모가 생성된 시간을 나타내는 문자열.
네트워크 요청을 처리하는 클래스.
기능: GET 요청을 수행하여 데이터를 가져오는 메서드.
인자:
url: 요청할 URL.completion: 클로저로 결과를 전달하는데 사용되는 핸들러.동작:
- URLSession을 생성하여 요청을 보냄.
- 데이터가 있는 경우, JSONDecoder를 사용하여 Codable 형식으로 디코딩하여 결과를 성공 또는 실패로 완료 핸들러로 전달.
기능: POST 요청을 수행하여 데이터를 전송하는 메서드.
인자:
url: 요청할 URL.body: POST 요청 시 전송할 데이터.completion: 클로저로 결과를 전달하는데 사용되는 핸들러.동작:
- URLSession을 생성하여 요청을 보냄.
- 데이터가 있는 경우, JSONEncoder를 사용하여 Codable 형식으로 인코딩하여 요청의 본문으로 설정.
- 데이터가 있는 경우, JSONDecoder를 사용하여 Codable 형식으로 디코딩하여 결과를 성공 또는 실패로 완료 핸들러로 전달.
기능: Memo 객체들을 가져오기 위해 API를 호출하는 메서드.
인자:
completion: 클로저로 결과를 전달하는데 사용되는 핸들러.동작:
- "http://localhost:3000/api/memo_content" URL에 대한 GET 요청을 수행.
- performGetRequest 메서드를 사용하여 요청을 처리하고, Memo 객체 배열을 성공 또는 실패로 완료 핸들러로 전달.
기능: 새 Memo 객체를 서버에 POST하기 위해 API를 호출하는 메서드.
인자:
body: POST 요청 시 전송할 Memo 객체.completion: 클로저로 결과를 전달하는데 사용되는 핸들러.동작:
private let apiClient = APIClient(): Memo 데이터를 가져오고 저장하기 위한 API 클라이언트 인스턴스.
private var data: [Memo] = []: 화면에 표시할 메모 데이터 배열.
private let tableView = UITableView(frame: .zero, style: .insetGrouped): 메모 리스트와 입력 필드를 표시할 테이블 뷰 인스턴스.
private var inputTextField: UITextField?: 사용자 입력을 받을 텍스트 필드.
뷰가 처음 로드될 때 호출되는 메서드.
setupTableView() 메서드 호출로 테이블 뷰 설정.
fetchDataFromAPI() 메서드 호출로 API를 통해 메모 데이터를 가져옴.
테이블 뷰를 설정하고, 데이터 소스 및 델리게이트를 ListViewController로 지정.
Auto Layout을 사용하여 테이블 뷰의 제약 조건을 설정.
UITableViewCell을 등록하여 재사용할 셀을 설정.
API를 통해 메모 데이터를 비동기로 가져와서 성공 시 데이터를 업데이트하고 테이블 뷰를 다시 로드함.
실패 시 에러 메시지를 출력.
새로운 메모를 입력받아 API를 통해 서버에 전송하는 메서드.
성공 시 업데이트된 데이터를 다시 가져오고 입력 필드를 비움.
실패 시 에러 메시지를 출력.
numberOfSections(in:): 입력 섹션과 메모 리스트 섹션을 위한 2개 섹션 반환.
tableView(_:numberOfRowsInSection:): 입력 섹션은 1개, 메모 리스트 섹션은 메모 데이터의 개수 반환.
tableView(_:cellForRowAt:): 입력 섹션에서는 입력 텍스트 필드를 포함한 셀을 반환하고, 메모 리스트 섹션에서는 메모 데이터를 표시하는 셀을 반환.
추가적인 델리게이트 메서드 구현은 생략되어 있음.
textFieldShouldReturn(_:): 텍스트 필드에서 리턴 키를 눌렀을 때 호출되는 메서드.
postMemo(content:)를 호출하여 새로운 메모를 생성함.