使用 Alamofire 发送多个类型参数到 API - Swift
Send multiple type parameter with Alamofire to API - Swift
我需要用 Alamofire
:
向 API
发送两个类似波纹管的参数
function: String
和 json: ModelPostFiltersShort
.
function: String
: 这是一个字符串名称。
这个 (json: ModelPostFiltersShort
) 参数如下所示:
struct ModelPostFiltersShort: Codable {
var languages, types: [String]
var categories: [Int]
var page: Int
}
如何使用 Alamofire
发送这些参数?
let params : [String : ?] = ["function": function,"??": ??]
Alamofire.request(url, method: .get, parameters: params????).responseJSON {
}
在 android 中,我发送的值如下所示:
@POST("/web_service/mobile/rest")
Observable<Response<List<GetShortTermCoursesModel>>> getResultFilters(@Query("function") String function,
@Body SendFiltersShortCourseModel sendFiltersShortCourseModel);
这个@Body SendFiltersShortCourseModel sendFiltersShortCourseModel
参数没有名字!!
使用 JSONEncoder
从 ModelPostFiltersShort's
实例中获取 data
,然后使用 String's
init(data:encoding:)
将其转换为 String
,即
do {
let data = try JSONEncoder().encode(obj) //this is body of the request
let params = ["function": function] //these are query params
if let url = URL(string: "YOUR_URL") {
var urlRequest = URLRequest(url: url) // create url request
urlRequest.addValue("application/json", forHTTPHeaderField: "Content-Type")
urlRequest.httpBody = data
//now create Alamofire request here...
}
} catch {
print(error)
}
obj
是类型 ModelPostFiltersShort
的实例
创建包含所有 body(请求参数)
的模型
struct RequestParameters: Codable {
let languages: [String]
let types: [String]
let categories: [Int]
let page: Int
}
使用下面的代码准备并发送请求
func sendRequest() {
let requestParameters = RequestParameters(languages: ["fa"], types: ["modular"], categories: [70], page: 1)
// create full parameters model
let encoder = JSONEncoder() // create encoder to encode your request parameters to Data
guard let data = try? encoder.encode(requestParameters) else {
return
} // create data
let url = URL(string: "https://reg.mou.ir/web_service/mobile/rest?function=getShortTermCourses")! // create url
var urlRequest = URLRequest(url: url) // create url request
urlRequest.addValue("application/json", forHTTPHeaderField: "Content-Type") // add all the headers you need
urlRequest.httpBody = data // add your parameters
urlRequest.httpMethod = "POST"
// send your request
Alamofire.request(urlRequest).responseString { (response) in
switch response.result {
case .success(let responseString):
print("Success: \(responseString)") // get your response here
case .failure(let error):
print("Error: \(error.localizedDescription)") // get error if it appears here
}
}
}
我需要用 Alamofire
:
API
发送两个类似波纹管的参数
function: String
和 json: ModelPostFiltersShort
.
function: String
: 这是一个字符串名称。
这个 (json: ModelPostFiltersShort
) 参数如下所示:
struct ModelPostFiltersShort: Codable {
var languages, types: [String]
var categories: [Int]
var page: Int
}
如何使用 Alamofire
发送这些参数?
let params : [String : ?] = ["function": function,"??": ??]
Alamofire.request(url, method: .get, parameters: params????).responseJSON {
}
在 android 中,我发送的值如下所示:
@POST("/web_service/mobile/rest")
Observable<Response<List<GetShortTermCoursesModel>>> getResultFilters(@Query("function") String function,
@Body SendFiltersShortCourseModel sendFiltersShortCourseModel);
这个@Body SendFiltersShortCourseModel sendFiltersShortCourseModel
参数没有名字!!
使用 JSONEncoder
从 ModelPostFiltersShort's
实例中获取 data
,然后使用 String's
init(data:encoding:)
将其转换为 String
,即
do {
let data = try JSONEncoder().encode(obj) //this is body of the request
let params = ["function": function] //these are query params
if let url = URL(string: "YOUR_URL") {
var urlRequest = URLRequest(url: url) // create url request
urlRequest.addValue("application/json", forHTTPHeaderField: "Content-Type")
urlRequest.httpBody = data
//now create Alamofire request here...
}
} catch {
print(error)
}
obj
是类型 ModelPostFiltersShort
创建包含所有 body(请求参数)
的模型struct RequestParameters: Codable {
let languages: [String]
let types: [String]
let categories: [Int]
let page: Int
}
使用下面的代码准备并发送请求
func sendRequest() {
let requestParameters = RequestParameters(languages: ["fa"], types: ["modular"], categories: [70], page: 1)
// create full parameters model
let encoder = JSONEncoder() // create encoder to encode your request parameters to Data
guard let data = try? encoder.encode(requestParameters) else {
return
} // create data
let url = URL(string: "https://reg.mou.ir/web_service/mobile/rest?function=getShortTermCourses")! // create url
var urlRequest = URLRequest(url: url) // create url request
urlRequest.addValue("application/json", forHTTPHeaderField: "Content-Type") // add all the headers you need
urlRequest.httpBody = data // add your parameters
urlRequest.httpMethod = "POST"
// send your request
Alamofire.request(urlRequest).responseString { (response) in
switch response.result {
case .success(let responseString):
print("Success: \(responseString)") // get your response here
case .failure(let error):
print("Error: \(error.localizedDescription)") // get error if it appears here
}
}
}