Ios 如何根据id下载数据列表?

Ios 如何根据id下载数据列表?,ios,swift,urlsession,Ios,Swift,Urlsession,我有两个http地址。第一个允许我使用/findAll下载整个列表,但是第二个没有这个查询。它只允许通过第一个地址/{stationId}的id下载所选站点。所以我只能在一个查询中下载一个站点。如何通过URLSession下载第二个地址的完整列表?环路 地址: 第一: 第二: http://api.gios.gov.pl/pjp-api/rest/station/sensors/{stationId} 无法在第二个查询中使用/findAll查询 第一(车站): func fetchStatio

我有两个http地址。第一个允许我使用/findAll下载整个列表,但是第二个没有这个查询。它只允许通过第一个地址/{stationId}的id下载所选站点。所以我只能在一个查询中下载一个站点。如何通过URLSession下载第二个地址的完整列表?环路

地址: 第一:

第二:

http://api.gios.gov.pl/pjp-api/rest/station/sensors/{stationId}
无法在第二个查询中使用/findAll查询

第一(车站):

func fetchStations(url:url)->可观察{
return Observable.create{observator->Disposable in
让task=URLSession.shared.dataTask(带:url)
{数据,u,u中
guard let data=其他数据{
observer.onError(n错误(域:“”,代码:-1,用户信息:nil))
返回
}
做{
let stations=try JSONDecoder().decode([Station].self,from:data)
onNext观察员(电台)
}抓住{
observer.onError(错误)
}
}
task.resume()
归还一次性物品。创建{
task.cancel()
}
}
}
第二(传感器):

func fetchSensors(url:url)->可观察{
return Observable.create{observator->Disposable in
让task=URLSession.shared.dataTask(带:url)
{数据,u,u中
guard let data=其他数据{
observer.onError(n错误(域:“”,代码:-1,用户信息:nil))
返回
}
做{
让传感器=尝试JSONDecoder()。解码([Sensor].self,from:data)
observer.onNext(传感器)
打印(“API服务:\(传感器)”)
}抓住{
observer.onError(错误)
}
}
task.resume()
归还一次性物品。创建{
task.cancel()
}
}
}

您的第二个函数需要输入
stationID
,然后在函数
baseURL+“sensors/”+stationID
中创建您的最终URL


确保您的对象具有API文档中所有必需的属性

我知道。这就是问题所在,因为我需要所有的传感器。一个查询只给了我空间站下的传感器。例如,只有一个或两个。我需要所有站点的所有传感器。可以通过/findAll查询下载所有站点,但不可能对传感器进行相同的查询。啊,那么您需要为站点创建一个循环,以便逐个获取所有传感器
http://api.gios.gov.pl/pjp-api/rest/station/sensors/{stationId}
func fetchStations(url: URL) -> Observable<[Station]> {
    
    return Observable.create { observer -> Disposable in
    
    let task = URLSession.shared.dataTask(with: url)
    { data, _, _ in
    
    guard let data = data else {
        observer.onError(NSError(domain: "", code: -1, userInfo: nil))
        return
    }
        
        do {
            let stations = try JSONDecoder().decode([Station].self, from: data)
            observer.onNext(stations)
        } catch {
            observer.onError(error)
        }
    }
        task.resume()
        
        return Disposables.create {
                task.cancel()
            }
        }
}
func fetchSensors(url: URL) -> Observable<[Sensor]> {
    
    return Observable.create { observer -> Disposable in
    
    let task = URLSession.shared.dataTask(with: url)
    { data, _, _ in
    
    guard let data = data else {
        observer.onError(NSError(domain: "", code: -1, userInfo: nil))
        return
    }
        
        do {
            let sensors = try JSONDecoder().decode([Sensor].self, from: data)
            observer.onNext(sensors)
            print("API SERVICE:  \(sensors)")
        } catch {
            observer.onError(error)
        }
    }
        task.resume()
        
        return Disposables.create {
                task.cancel()
            }
        }
}