gpt4 book ai didi

javascript - Node.js POST API 和请求体的解析

转载 作者:行者123 更新时间:2023-11-28 21:23:45 25 4
gpt4 key购买 nike

作为 Node 新手,我似乎在一些非常基本的步骤上苦苦挣扎。有人可以指出我正确的方向吗?

本质上,我试图将输入从 iOS (Objective-C) 客户端发送到 Node.js 服务器,但不知何故无法解析 http 消息正文。事实上,如果我在服务器上的 POST API 中记录相同的数据,则从客户端发布的数据甚至不会出现在请求中。我可以确认端点是正确的,因为正在打印其他日志...这是我的 iOS 和 Node 代码 - 似乎非常简单...

感谢您的意见...

iOS 代码:

- (IBAction)sendUsername:(id)sender
{
NSMutableURLRequest *postRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://MYURL:PORT/registerUser"]];

NSDictionary *sentData = [[NSDictionary alloc] initWithObjectsAndKeys:@"socool", @"username", nil];
NSError *theError = nil;
NSData *postData = [NSJSONSerialization dataWithJSONObject:sentData options:NSJSONWritingPrettyPrinted error:&theError];

[postRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[postRequest setHTTPMethod:@"POST"];
[postRequest setHTTPBody:postData];

// Have tried with both - initWithRequest and with sendSyncRequest - both dont show the req.body on the server...

// NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:postRequest delegate:self];

NSError *returnedError = nil;
NSURLResponse *urlResponse = [[NSURLResponse alloc] init];
NSData *dataResponse = [NSURLConnection sendSynchronousRequest:postRequest returningResponse:&urlResponse error:&returnedError];
}

Node.js 代码:

app.post('/registerUser', function(req, res) {
console.log("Request to register new user received"); // This gets printed successfully...

body = [];
body = Buffer.concat(body).toString();

console.log("Targeted output is: ", req.body.username); // req.body itself keeps coming as undefined.
});

最佳答案

看起来您正在使用 ExpressJS。如果是这样,在使用 app.post 设置路由之前,您是否指定了 bodyParser?

看看这个:http://expressjs.com/en/api.html

特别是“req.body”部分。

Express 依赖于一个中间件来拦截请求、解析它,然后用它填充 req.body。

关于javascript - Node.js POST API 和请求体的解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38881782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com