【发布时间】:2019-12-06 23:39:32
【问题描述】:
我正在使用@nrwl/Nx 创建一个项目。
我成功地向其中添加了 Angular 和 Nest 项目。
然后我尝试测试两者之间的连接。
角度代码
content;
testEndpoint() {
this.http.get<any>('api/test').subscribe(res => this.content = res);
}
嵌套代码
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get('test')
testConnection(): string {
return 'Some content';
}
}
正如所见,我只是想从端点返回一个字符串。在the documentation,
使用此内置方法,当请求处理程序返回一个 JavaScript 对象或数组时,它会自动序列化为 JSON。然而,当它返回一个字符串时,Nest 将只发送一个字符串而不尝试对其进行序列化。这使得响应处理变得简单:只需返回值,其余的由 Nest 处理。
所以很自然,我希望这会起作用(他们的示例与此基本相同)。
但是我遇到了以下错误:
错误:SyntaxError:JSON 中位于 [...] 位置 0 的意外标记 S
即使 HTTP 代码是 200 并且可以在网络选项卡中看到内容。
有人可以向我解释这是什么问题吗?
(我尝试在请求中添加内容类型标头,但没有成功)
EDIT 1:请求:
【问题讨论】:
-
你能检查一下响应的标题吗?如果客户端认为它是 JSON(显然不是;JSON 格式的字符串从
"字符开始),客户端会忽略 mime 类型或服务器仍将其设置为 'application/json' (或类似的东西)。 -
尝试将其更改为
http.get<string>,因为这是您所期望的。 -
@raina77ow 我已将完整请求作为图片上传到我的问题
-
@HereticMonkey 不工作
-
@raina77ow 内容类型标头具有误导性,但要让您知道,将
@Header('Content-Type', 'text/plain')添加到 Nest 后,它仍然不起作用,标头被删除。
标签: angular typescript nestjs