API 仅当我传递参数时请求超时

API request times out ONLY if I pass parameters

我想弄清楚为什么每次我将有效的 json 传递到我的服务器以获取 GET 请求时连接超时。我在 GET 以外的任何其他请求类型中将 json 传递到我的服务器没有任何问题...我已经在本地测试了服务器端代码并​​且查询按预期工作。

我想从我的数据库中获取一个特定的用户,我需要传入一个用户名,所以我将用户名发送到服务器。

我不断收到错误消息(如果我不向服务器发送任何参数,而只是 return current_user,它会工作并且我不会收到此错误消息)

 Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSUnderlyingError=0x604000454c40 {Error Domain=kCFErrorDomainCFNetwork Code=-1001

这是 API 调用代码的一部分,我在其中设置请求类型和要发送到服务器的值,以防:

let request = NSMutableURLRequest(url: url as URL)
    request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
    request.httpBody = jsonData
    request.httpMethod = "GET"

服务器设置,以防万一:
Digitalocean 液滴,Linux,Ubuntu 16.04,Nginx

编辑/更新
如果我将方法从 GET 更改为 POST(并保持服务器代码完全相同),服务器会立即发回正确的数据。

此服务器端代码非常短,所以我真的不明白它是如何因优化而超时的:

user = UserModel.find_by_username(data['username'])

    if user:
        return {"response": [user.json()]}, 200
    return {"response": "user not found"}, 404

看来我们确实无法通过 GET 方法发送 json。它似乎在模拟器和实际设备上都不起作用...我看到了类似的 SO post,其中有人评论了我正在经历的事情。将 GET 更改为 POST 是解决方法....但这是一个 GET 请求,那么为什么这不起作用?

GET 方法不支持 http 正文。当您以 url 编码发送参数时,它将起作用。

示例:

http://www.example.de?username=abc