티스토리 뷰
1. 우선 SPM 에서 Moya 를 추가해준다.
지금은 Rx랑 Moya 정도를 쓸 거 같아 두 개를 체크 하였다.
2. POSTMAN 으로 사용할 API 를 점검 해본다.
이번에 사용할 API는 api.cndb.com 에서 제공하는 조크를 랜덤으로 응답해 주는 API 다.
3. Data 형태와 Request 형태를 코드로 작성 한다.
(사이트를 뒤져서 가져온 다음 몇 몇 줄을 수정 하였다.)
//jokeData.swift
import Foundation
struct Joke: Decodable {
var type: String
var value: Value
struct Value: Decodable {
var id: Int
var joke: String
var categories : [String]
}
}
//jokeAPI.swift
import Foundation
import Moya
enum JokeAPI {
case randomJokes(_ firstName: String? = nil, _ lastName: String? = nil)
}
extension JokeAPI: TargetType {
var baseURL: URL {
return URL(string: "https://api.icndb.com")!
}
var path: String {
switch self {
case .randomJokes(_, _):
return "/jokes/random"
}
}
var method: Moya.Method {
switch self {
case .randomJokes(_, _):
return .get
}
}
var sampleData: Data {
switch self {
case .randomJokes(let firstName, let lastName):
let firstName = firstName
let lastName = lastName
return Data(
"""
{
"type": "success",
"value": {
"id": 107,
"joke": "\(firstName)\(lastName) can retrieve anything from /dev/null."
}
}
""".utf8
)
}
}
var task: Task {
switch self {
case .randomJokes(let firstName, let lastName):
let params: [String : String] = [
"firstName": firstName!,
"lastName": lastName!
]
return .requestParameters(parameters: params, encoding: URLEncoding.queryString)
}
}
var headers: [String : String]? {
return ["Content-type": "application/json"]
}
}
4. viewcontroller 에서 request 해서 response를 uitextview에 전달 한다.
class ViewController: UIViewController {
@IBOutlet weak var jokeTextView: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let provider = MoyaProvider<JokeAPI>()
provider.request(.randomJokes("GilDong", "Hong")) { (result) in
switch result {
case let .success(response):
let result = try? response.map(Joke.self)
self.jokeTextView.text = result?.value.joke
case let .failure(error):
print(error.localizedDescription)
}
}
}
여기 까지 기본 코드 작성 하고 2부로 들어 가는 데, 중간에 아래와 같은 에러가 출력 될 것이다.
(해당 사이트에서 인증서 갱신이 안되서 발생 하는 것으로 보이고, HTTP를 사용 하는 방법을 2부에서 안내 한다.)
2022.08.17 - [분류 전체보기] - Test -Moya API Test-2
Test -Moya API Test-2
일단 해당 API를 Xcdoe에 작성하면 아래와 같은 에러가 발생한다. 022-08-17 00:43:36.034931+0900 moya[11437:77410] ATS failed system trust 2022-08-17 00:43:36.035073+0900 moya[11437:77410] Connection 1:..
iosdevhistory.tistory.com
'iOS > Test' 카테고리의 다른 글
테스트 응용 -Moya API Test-3 (0) | 2022.08.24 |
---|---|
테스트 응용 -Moya API Test-2 (0) | 2022.08.17 |
테스트 응용 - 비 동기 실행 (0) | 2022.08.09 |
테스트 응용 - ScreenShot (XCUIScreen, XCTAttechment) (0) | 2022.08.08 |
테스트 팁 - 스크립트로 빌드와 테스트 동시에 하기 (0) | 2022.07.28 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 코테
- xcode whitespace trim option
- async
- geohash
- bitrise
- ATS failed system trust
- Fastlane
- 빌드자동화
- GCD
- Default Rules
- 무료는 아니지만
- 프로그래머스
- ChatGPT
- XCTestExpectation
- Moya
- AWS IoT
- GPT4
- 모듏화
- ios
- IF (KAKAO) DEV 2022
- AppThinning
- MQTT
- CI/CD
- 같이쓰기
- swiftLint
- jenkins
- RxSwift
- swift
- firebase
- chatgpt 4o
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함