Angular在发送之前获取原始http请求
Posted
技术标签:
【中文标题】Angular在发送之前获取原始http请求【英文标题】:Angular get raw http request before sending 【发布时间】:2019-09-27 11:23:07 【问题描述】:我正在尝试在将 HTTP 请求发送到服务器之前获取它们。
我的第一次尝试是像这样写一个 HttpIntercepter
@Injectable()
export class HttpLoggingInterceptorProvider implements HttpInterceptor
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>
console.log('Request To Be Logged:');
console.dir(req);
if(req.body)
try
let formData = <FormData>req.body;
if(formData.has('id_front'))
console.log(formData.get('id_front'));
if(formData.has('id_back'))
console.log(formData.get('id_back'));
catch(err)
return next.handle(req);
这很好用,但不是我想要的。我想将最终的组合请求作为原始文本而不是对象。
此刻控制台输出looks like this
如您所见,我没有从中获得任何信息。我看不到设置了多少或设置了哪些值。
但是当我以编程方式请求正文的内容时,我可以获得如下值:
let formData = <FormData>req.body;
if(formData.has('id_front'))
console.log(formData.get('id_front'));
if(formData.has('id_back'))
console.log(formData.get('id_back'));
至少我知道身体中存在一些东西,除了 FormData 的类型......
我的问题
如何获取将发送到服务器的原始组合请求?
【问题讨论】:
为什么不直接打开浏览器开发工具的网络面板?浏览器已经提供了该信息,无需编写任何代码。 @JBNizet 从中创建一个答案,您将获得投票 => 它有效 :) 【参考方案1】:你可能会这样做
console.log(JSON.stringify(req.body))
【讨论】:
【参考方案2】:那是因为“try”块是在其他所有内容之后执行的。 Angular http 请求总是在其他请求之后执行,因此您必须从那里获取数据或以其他方式执行此操作
【讨论】:
以上是关于Angular在发送之前获取原始http请求的主要内容,如果未能解决你的问题,请参考以下文章
Java利用原始HttpURLConnection发送http请求数据小结
休息模板 - 如何在发送之前检索原始 POST 请求字符串 [重复]
令牌拦截器不再发送原始请求(Angular、Node.js)