问题描述
我已经尝试了好几个小时才能使它正常工作,但我做不到,我希望你们中的一些人能回答我的问题,因为它必须非常简单,而且我是初学者
我使用的是AngularJs,而Nest中的NestJs使用的是@nestjsx/crud
,然后拖曳了request docs,所以,这里出现了问题:
这是我的Angular服务功能
getProductsOfPiece(pieceId: number): Observable<ProductSimple[]> {
return this.http.get<ProductSimple[]>(
'api/producto/',{
params: {
fields: "id,refFabr,refCliente,descrCorta,imagen",filter: 'pieza.id||$eq||'+ pieceId
}
}
);
}
此请求给了我一个400
错误的请求,看起来像这样:
/api/producto/?fields=id,imagen&filter=pieza.id%257C%257C$eq%257C%257C1
我想像%
和十六进制与URI编码有关,并尝试对其进行编码/解码,但是没有用。
我还尝试使用文档中引用的FrontEnd usage中RequestQueryBuilder
的{{1}}类@nestjsx/crud-request
,并将其附加到URL
let queryString = RequestQueryBuilder.create()
.select(["id","refFabr","refCliente","descrCorta","imagen"])
.setFilter({
field: "coleccion.id",operator: CondOperator.EQUALS,value: collectionId
}).query();
return this.http.get<ProductSimple[]>(
'api/producto/?'+queryString
);
但结果更糟
/api/producto/?fields=id%2CrefFabr%2CrefCliente%2CdescrCorta%2Cimagen&filter%5B0%5D=pieza.id%7C%7C%24eq%7C%7C1
我不了解的是我如何用邮递员来完成这项工作,而且有效!
api/producto/?fields=id,imagen&filter=coleccion.id||$eq||6
我如何使它起作用,我的代码有什么问题?
解决方法
最后得到答案,只需要在.query(false)
上设置RequestQueryBuilder
,此boolean
参数适用于encode
,接缝类似于Angular的HttpClient
类对网址进行一些编码或其他操作
有效!这是代码:
getProductsOfPiece(pieceId: number): Observable<ProductSimple[]> {
let queryString = RequestQueryBuilder.create()
.select(["id","refFabr","refCliente","descrCorta","imagen"])
.setFilter({
field: "coleccion.id",operator: CondOperator.EQUALS,value: collectionId
}).query(false);
return this.http.get<ProductSimple[]>(
'api/producto/?'+queryString
);
}
您需要导入
RequestQueryBuilder
中的@nestjsx/crud-request
npm我@ nestjsx / crud-request。
欢迎任何观察...