# URLSession

38개의 포스트

URL Loding System과 URLSession

iOS에서 네트워킹 작업을 하기 위해 URLSession을 사용한다. 애플 문서에서 URLSession 참조 문서만 보면 API를 사용하기엔 명확하지 않을 수 있기 때문에 URL Loding System 개요를 먼저 읽어보라고 한다. URL Loding System 애플의 URL Loding System은 URL을 통해 자원 접근, 표준 인터넷 프로토콜 사용하여 서버와 통신을 제공한다. (비동기) URLSession은 이 시스템의 핵심 클래스로, 데이터 접근 및 네트워크 통신의 기본적인 작업을 처리하기 위한 객체이다. URLSeesion인스턴스를 통해 URLSessionTask를 생성하여 데이터를 가져오거나, 파일을 다운로드/업로드하는 실질적입 작업을 수행한다. URLSessi

약 15시간 전
·
0개의 댓글
·

Processing URL Session Data Task Results with Combine

Use a chain of asynchronous operators to receive and process data fetched from a URL. URL로부터 받아온 데이터를 수신하고 처리하기 위해 비동기 오퍼레이터의 연쇄를 사용할 수 있습니다. Overview URL 세션을 사용하는 작업 수행은 본질적으로 비동기입니다. 네트워크 엔드포인트, 파일 시스템, 그리고 기타 URL 기반 소스로부터 데이터를 받아오는 것은 시간이 소요됩니다. URL 로딩 시스템은 딜리게이트 혹은 컴플리션 핸들러를 통해 비동기적으로 결과를 가져오기 위한 책임이 있습니다. 컴바인 프레임워크 역시 비동기를 다룹니다. URL 작업을 처리하기 위해 사용하면 결과를 단순화 하고 더 나

2023년 9월 21일
·
0개의 댓글
·

URLSession, Alamofire 간단한 내용

https://medium.com/@greenSyntax/network-layer-in-ios-1-4-bf15ba91347e 이 글을 보고 번역/정리한 글 자세한 내용은 위 블로그를 참조 wind URLSession 이는 Foundation 프레임워크의 일부입니다. 네트워크 요청을 할 때 사용합니다. 주요 세 가지 작업이 있는데 Data Task - GET POST PUT DELETE 요청들 Download Task - 웹으로부터 데이터를 다운로드 Upload Task - 웹으로 데이터를 업로드 이 존재함니당. 위 작업들을 작성하기 전에 항상 URLSession, URLSessionConfiguration을 신경써야 합니다 URLSessionConfiguration은 URLSession에 대한 종속성으로, 사용할 때 먼저 얘를 생성하고 URLSession에 주입을 시킵니다. 그리고 URLSession이 사용할 준비가 된다면 위 작업들 중 하나를 수

2023년 9월 19일
·
0개의 댓글
·

[iOS][Swift] URLSession vs Alamofire

URLSession과 Alamofire는 iOS와 macOS에서 네트워킹 작업을 수행하기 위한 도구입니다. URLSession은 Apple의 Foundation 프레임워크에 내장된 API로 제공되며, Alamofire는 이를 기반으로 한 오픈 소스 서드파티 라이브러리입니다. 두 방식 모두 HTTP/HTTPS 요청을 보내기 위해 사용되지만 여러 차이점이 있습니다: 1. 소스와 관련된 차이점: URLSession: Apple에서 제공하는 공식 네트워킹 API입니다. Alamofire: Alamofire Software Foundation에서 제공하는 오픈 소스 프로젝트로, URLSession을 기반으로 빌드되었습니다. 2. 사용 편의성: URLSession: 기본적인 기능과 구조를 제공하며, 복잡한 요청을 관리하려면 추가 코드가 필요할 수 있습니다. Alamofire: 더욱 간결하고 명확한 방법으로 요청을 만들고 관리할 수 있도록 다양한 편의 기능을 제공합니다.

2023년 8월 29일
·
0개의 댓글
·
post-thumbnail

[ios앱 개발](SWIFTUI) ios와 mysql 연결

👏한국 연구 재단에서 지원하는 공동 연구사업에 참여할 기회가 생겼다. 타 대학의 심리학과에서 연구를 진행하는 데 있어 필요한 앱을 우리 학교에 외주 형식으로 맡겼는데, 그 프로젝트의 연구원으로 참여하게 되었다. 앱을 개발하면서 가장 중요한 것은 데이터베이스 구축과 서버와의 연결이라고 생각한다. 약 두달정도 ERD를 그려가며, 최대한 많은 경우의 수와 데이터베이스를 관리하기 쉽게 하기 위한 DB구축을 마치고, 앱의 기능적인 부분 구현을 시작하고 있다 .. 이번에는 가버전을 위해 디자인을 생략하고 기능적인 부분만 구현하는데 있어 가장 많은 시간을 할애했던 xcode(ios)에서 mysql과 요청을 주고받는 방식을 기록하고자 한다. 먼저 서버사이드를 결정해야 하는데, 나는 프로젝트 책임자(교수님)의 강권으로(?) PHP를 사용하기로 했다. 편집기는 선택사항이었는데 나는 terminal에서 vi편집기를 사용하고 있다. 다른 팀원들은 v

2023년 8월 13일
·
0개의 댓글
·
post-thumbnail

Todo앱 시리즈3 - Rx + UrlSession + MVVM

반드시 해야하는 작업 [x] 할일 목록 전체 불러오기 [x] 데이터 날짜 별로 그룹핑해서 데이터 보여주기 즉, createdAt 혹은 updatedAt날짜가 section이 되고 section에는 해당 날짜에 올리거나 수정된 todo가 들어가야 한다 [x] 스크롤이 바닥(맨 마지막)이 보이면 데이터를 더 불러와야 한다 즉, 다음 페이지를 불러와야 한다 [x] +버튼 누르면 할일 목록 추가하기 → 할일 목록 db에 데이터 보내기 + tableView데이터 수정 [x] 해당 할일을 클릭하면 모달이 뜨고 데이터 수정하기(수정하기 api이용) [x] 해당 할일의 체크박스를 누르면 is_done변수가 true로 변경되고 db데이터가 수정되어야 한다 [x] 해당 할일을 클릭하면 모달이 뜨고 데이터 삭제하기 (삭제하기 api이용) [x] searchBar를 통해서 관련된 할일 목록을 찾을 수 있어

2023년 8월 9일
·
0개의 댓글
·
post-thumbnail

URLSession/네트워크 통신 - 공부하다 생긴 의문점

의문점 URLSession.dataTask는 왜 아무것도 수행하지 않는가? → dataTask()의 정확한 역할은 무엇일까? → resume()은 무엇을 수행하는가? 정보 URLSession.dataTask(with:completionhandler:) Summary Creates a task that retrieves the contents of the specified URL, then calls a handler upon completion. Declaration func dataTask(with url: URL, completionHandler: @escaping @Sendable (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTask > completion handler 선언에 @escaping과 @Sendable이 사용되었다. 무슨 의미인가? @e

2023년 6월 2일
·
0개의 댓글
·

Combine으로 네트워크 통신

dataTaskPublisher Combine을 사용하지 않고 URLSession을 사용하는 경우 보통 위 코드와 같은 메소드를 사용하는데요. 이는 비동기적으로 Request를 하고 받은 Response를 completionHandler에 전달합니다. Combine을 사용하면 URLSession으로 Publisher를 만들 수 있습니다. 이 Publisher는 비동기적으로 Request를 하고 받은 response를 발행합니다. decode Combine에서는 네트워크 통신으로 받은 JSON을 struct로 디코딩 해주는 operator도 제공합니다. 이 경우 디코딩 에러가 발생할 수 있으므로 Publisher의 Error 타입을 정의할 때 URLError가 아니라 더 큰 타입인 Error를 정의해주어야 합니다. 네트워크 통신을 받아 UI를 업데이트할 때 URLSession의 CompletionHandler 안에서 UI를 업데이트 하는 코드를 사용할

2023년 4월 7일
·
0개의 댓글
·

[iOS | Swift] 예제와 함께 URLSessionDataTask 뿌시기

🎈 URLSession이란? : HTTP/HTTPS를 통해 콘텐츠(데이터)를 주고받는 API를 제공하는 클래스 이 API는 인증 지원을 위한 많은 델리게이트 메서드를 제공하며, 애플리케이션이 실행 중이지 않거나 일시 중단된 동안 백그라운드 작업을 통해 콘텐츠를 다운로드하는 것을 수행하기도 한다. URLSession API를 사용하기 위해 애플리케이션은 세션을 생성한다. 해당 세션은 관련된 데이터 전송작업 그룹을 조정한다. 예를 들면, 웹 브라우저를 사용 중인 경우 탭 당 하나의 세션을 만들 수 있다. 각 세션 내에서 애플리케이션은 작업을 추가하고, 각 작업은 특정 URL에 대한 요청을 나타낸다. 🎈 URLSession의 유형 URLSession 객체가 소유한 `config

2022년 11월 3일
·
0개의 댓글
·

URLSession과 Alamofire를 비교해보자. with SwiftUI

URLSession과 Alamofire을 이용해서 간단한 앱을 구현하고 비교해보쟈🙌 애플리케이션 미리보기 & 깃허브 주소 깃허브 주소: URLSession_Alamofire 🚀 시작하기에 앞서 💻 Tech Stack Swift SwiftUI Alamofire MVVM 📱Device M1 MacBook Air iOS 15.5 iPhone 13 mini Simulator 👀 사용할 API 오늘 구현을 위해 사용할 API는 RandomuserAPI이다. 여기서 우리는 https://randomuser.me/api/?res

2022년 9월 28일
·
0개의 댓글
·
post-thumbnail

[TIL] URLSession

URLSession 내 앱, 사용자의 CoreData에 없는 정보는 어디서 가져올 수 있나? 인터넷의 힘을 빌려보면 어떨까. URLSession 객체를 써서 우리는 쉽게, 비동기로 네트워크의 데이터를 가져올 수 있다. 데이터를 업로드하는 것도 당연 가능하다. Foundation에서 제공하는 네트워킹 객체다. 싱글톤 shared도 사용할 수 있다. 데이터를 업로드하거나 다운로드할 수 있도록 API를 제공한다. 앱 생명주기 중 백그라운드에서도 작동할 수 있다. 네트워크를 위한 기본 규약인 HTTP 프로토콜을 준수해야 하며, API 세션 델리게이트로 캐싱도 가능하다. 활용 한 번에 URLSession.shared.DataTask() 를 호출하면 하나의 메소드가 너무 많은 일을 하게 되어서 보기가 어렵다. 아래 예시는 클로저를 활용해서 실제로 세션을 수행하는 부분과 작업을 진행할 url을 넘겨주는 메소드를 분리한 예시이다. > U

2022년 8월 30일
·
0개의 댓글
·
post-thumbnail

[Swift] Network Layer 구성하기

Testable하게 Network Layer를 구성하고자 하였습니다. Network 레이어 설계 핵심 모듈 Endpoint: path, queryPramameters, bodyParameter등의 데이터 객체 Provider: URLSession, DataTask를 이용하여 network호출이 이루어 지는 곳 Endpoint는 요청, 응답 protocol을 준수하는 상태 req

2022년 8월 30일
·
0개의 댓글
·
post-thumbnail

URLSession의 개념과 활용

서론 지금까지는 API 통신을 위해 Alamofire을 이용하여 데이터를 받아왔다. 하지만 Alamofire은 라이브러리이기 때문에 점차 라이브러리를 줄여가기 위해서 apple이 제공하는 URLSession을 사용하여 API와 통신하고 데이터를 처리해주는 방법에 대해 알아보자. URLSession 사용 순서 URLSession을 사용하는 순서는 이와 같다. Configuration 결정 Session 생성 Request에 사용할 url 설정 Task 결정 및 작성 URLSessionConfiguration URSession을 통해 데이터를 다운로드하거나 업로드 할 때, URLSessionConfiguration으로 세부적인 동작과 정책을 설정할 수 있음. Shard Session : 단순한 네트워크 요청을 할 때 사용. 커스터마이징 X. 네트워크 응답은 Completion Handler를 통해 전달받음

2022년 8월 30일
·
0개의 댓글
·

네트워크와 무관한 URLSession Unit Test를 하는 목적

유닛 테스트란?? 유닛 테스트는 컴퓨터 프로그래밍에서 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차. 즉, 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차를 말함 unit test 는 작성한 프로그램이 의도한 대로 동작하는지 검증하는 가장 작은 단위의 테스트 이를 통해서 각 모듈(클래스, 메소드)들이 잘 동작하는지 확인할 수 있음. 왜 필요할까?? 굉장히 비효율적이지 않나.? 유닛 테스트를 하는 이유 각각의 모듈을 부분적으로 확인할 수 있어 어떤 모듈에서 문제가 발생하는지 빠른 확인이 가능 전체 프로그램을 빌드하는 대신 유닛 단위로 빌드해 확인하므로 시간 절약 어떻게 작성하는가?? 각 테스트 케이스는 서로 분리되어야 하므로(isolated), 가짜 객체 mock object(Stub)를 만들어 테스트 하는 것이 좋다 즉 의존성 주입이 핵심 의존성 주입이란?? 의존

2022년 7월 23일
·
0개의 댓글
·

[iOS] 네트워크 통신1 - URLSession

본 글은 네트워크 통신을 위한 방법 중 URLSession api를 이용한 네트워크 통신을 설명합니다. 전송받은 데이터를 Decode하는 방법은 이 글에서 다루지 않으니, 해당 내용이 궁금하신 분들은 다음 글을 참고하시길 바랍니다. 잘못된 내용은 댓글로 알려주시면 감사하겠습니다.😎 > 네트워크 통신에 사용되는 API는 URLSession, Alamofire, Moya등이 있다고 합니다. URLsession api가 제일 처음 나왔고 다른 api들의 base가 되기 때문에 알아두는 것이 좋다고 생각하여 글을 작성하게 되었습니다. URLSession >URLSession 클래스와 관련 클래스는 url로 표시되는 endpoint로 부터 데이터를 다운로드하거나 endpoint로 업로드를 수행하는 API라고 한다. 또한 이

2022년 7월 13일
·
0개의 댓글
·
post-thumbnail

[TroubleShooting] URLSession에서 SSL 인증 예외 처리하기

Raywenderlich 예제를 따라하던 중, NASA 공개 API 데이터를 다운로드하는 예제에서 다음과 같은 오류가 발생했다. > The certificate for this server is invalid. You might be connecting to a server that is pretending to be "eonet.sci.gsfc.nasa.gov" which could put your confidential information at risk. 결론적으로 말하면 저기 서버에 SSL인증서 문제가 있고, 아마 브라우저로 직접 api에 접속하면 다음과 같은 익숙한 이미지가 뜰 것이다. 보통 이런 경우 브라우저에서는 고급 -> 무시하고 그냥 접근 이런식으로 할텐데... 앱에서는 이렇게 처리할수 없다

2022년 5월 12일
·
0개의 댓글
·

Weather

Tric : URL로 OpenAPI가져오기(json), isHidden > 기능 : 도시 이름을 TextField에 입력하면 가져오기/잘못 입력 시 Alert 메세지 표시 > URLSession : HTTP / HTTPS 기반 요청을 처리하기 위한 클래스 및 클래스의 세트 모음 → html문서를 주고 받는데 쓰이는 통신 Protocol → 특정 url을 이용하여 data를 다운로드 ! (1) TextField에 도시이름을 입력한다. (2) 날씨가져오기 버튼을 눌러 API를 가져온다. (3) API가 Fetch되면 WeatherInformation 배열에 담기고 이를 StoryBoard에 적용시킨다. (4) 도시 이름 오 기입시, 해당 메세지는 ErrorMessage 배열에 담기고 이를 Alert로 표시한다. 📱Story Board 각 라벨들을 Stack View로 만들어 구분하기 - 전체 Stac

2022년 5월 11일
·
0개의 댓글
·
post-thumbnail

URLSession

iOS App에서 서버와 통신하기 위해 Apple에서는 URLSession이라는 기본 API를 제공하고 있다. third-party library로 많이 사용하는 Alamofire, kingfisher 등의 기반이 되는 API로 서버 통신을 위해 필수적으로 알아야 한다. Apple 문서를 읽으면서 이해해보자. Concept 일단 어떤 흐름으로 네트워크 요청을 처리하는지 개괄적으로 이해해보자. Session configuration 결정 Session 생성 URL 생성 Request 객체 생성 사용할 Task 결정 Completion handler Or Delegate 사용 여부 결정 Task 실행 Completion handler Or Delegate 실행 URLSessionConfiguration ![](https://velog.velcdn.com/images/wansook0316/post/85eca82e-b

2022년 5월 4일
·
0개의 댓글
·
post-thumbnail

[SwiftUI] HTTP Request로 가져온 서버 데이터를 MVVM 패턴에 따라 앱에 적용하기

지난 포스팅에서, MVVM 패턴이 무엇인지와 어떻게 실제 앱에 적용되는지, 그리고 Model, View, View Model이 각각 어떤 역할을 하는지를 알아보았다. 그럼 이번에는, 실제 프로젝트에서 HTTP Request 중 GET 메소드를 통해 서버에서 데이터를 받아오고, 받아온 데이터를 MVVM 패턴에 맞추어 화면에 나타내보도록 하겠다. MVVM 패턴에 대한 이해가 부족하다면, 아래 포스팅을 참고하길 바란다. MVVM 패턴에 대해 💻 사전 설정 HTTP Request 중 GET 메소드를 사용해볼 것이다. HTTP Request를 서버로 보내기 전에, 프로젝트에 몇 가지 설정을 해주었다. 참고로, 프로젝트 구조를 말할 때의 'Root'는 프로젝트의 루트폴더를 의미한다. - 프로젝트 내

2022년 3월 23일
·
0개의 댓글
·
post-thumbnail

[🍎WWDC21] Use async/await with URLSession (미완성...)

WWDC21, Use async/await with URLSession 을 직접 보고 번역한 글임을 참고해주세요. 기존 URLSession Intro (00:00) 안녕하세요. 저는 Guoye 입니다. 제 동료 Zhenchao 와 저는 HTTP frameworks 에서 일하고 있습니다. 여러분은 `Swift concurr

2022년 3월 19일
·
0개의 댓글
·