在Swift中解析的JSON HTTP请求有效载荷被Express解释为JSON对象中的单键-为什么?



我正在与Swift的iOS应用程序中的一些网络代码工作,并有一个问题,其中Codable结构被解析成JSON不正确,以这样一种方式,整个对象被用作键

我的Codable结构名为UserForLogin,将被解析为登录请求的主体。该结构体的代码如下:

struct UserForLogin: Encodable, Equatable {
let email: String
let password: String

init(email: String, password: String) {
self.email = email
self.password = password
}
}

signIn看起来像这样:

func signIn(with data: UserForLogin) -> AnyPublisher<UserLoginDTO?, Error> {
return gcNetworkService.post(to: AuthModuleEndpoint.signin, data: data, with: [])
.tryMap { userWithToken -> UserLoginDTO in
return userWithToken
}.mapError { error in
return error
}.eraseToAnyPublisher()
}

.post方法本质上调用另一个名为send的方法,该方法包含以下代码片段:

var request = createURLRequest(for: requestURL)
request.httpMethod = method 
let requestData = try? JSONEncoder().encode(data)

request.httpBody = requestData

return session.dataTaskPublisher(for: request)

当我进行这个调用时,我的后端接收到的请求体是:

{ '{"email":"test","password":"test2"}': '' }

本质上,整个对象被解析为一个JSON键,而不是每个变量作为一个键,每个值作为一个值,等等。

对于上下文,当我通过Postman发送请求时,我成功地处理了后端请求,所以我不认为这是服务器端问题。

任何指导将不胜感激!

感谢Jacob指出我遗漏了这一行:

request.addValue("application/json", forHTTPHeaderField: "Content-Type")

问题解决了。

相关内容

  • 没有找到相关文章

最新更新