Angular 询问 nestjsx/crud 的工作原理
Angular Request how it works for nestjsx/crud
我已经尝试了几个小时让它工作,但我做不到,我希望你们中的一些人能回答我的问题,因为它一定很简单,而且我是初学者
我在 Nest 中使用 AngularJs 和 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,refFabr,refCliente,descrCorta,imagen&filter=pieza.id%257C%257C$eq%257C%257C1
我想 %
和十六进制与 URI 编码有关并尝试 encode/decode 它,但没有成功。
我还尝试使用文档中引用的 FrontEnd usage 中 @nestjsx/crud-request
的 class RequestQueryBuilder
,并将其附加到 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
我不明白我是如何用我的 Postman 做到这一点的,而且它起作用了!
api/producto/?fields=id,refFabr,refCliente,descrCorta,imagen&filter=coleccion.id||$eq||6
我怎样才能让它工作,我的代码有什么问题?
终于得到答案,只需要在RequestQueryBuilder
上设置.query(false)
,这个boolean
参数是给encode
的,接缝像Angular的 HttpClient
class 对 URL 做了一些编码或其他事情,所以,无论如何
有效!这是代码:
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 i @nestjsx/crud-request.
欢迎任何意见...
更新
创建或更新
这是文档
创建一个 https://github.com/nestjsx/crud/wiki/Controllers#create-one-resource
更新一 https://github.com/nestjsx/crud/wiki/Controllers#update-one-resource
以下引导创建和更新很简单
只需将 POST 到 API 'api/producto/' (例如)并将对象作为请求中的正文
对于更新,仅使用 PUT 方法和带有模型 ID 'api/producto/1' 的 API(例如)
我已经尝试了几个小时让它工作,但我做不到,我希望你们中的一些人能回答我的问题,因为它一定很简单,而且我是初学者
我在 Nest 中使用 AngularJs 和 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,refFabr,refCliente,descrCorta,imagen&filter=pieza.id%257C%257C$eq%257C%257C1
我想 %
和十六进制与 URI 编码有关并尝试 encode/decode 它,但没有成功。
我还尝试使用文档中引用的 FrontEnd usage 中 @nestjsx/crud-request
的 class RequestQueryBuilder
,并将其附加到 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
我不明白我是如何用我的 Postman 做到这一点的,而且它起作用了!
api/producto/?fields=id,refFabr,refCliente,descrCorta,imagen&filter=coleccion.id||$eq||6
我怎样才能让它工作,我的代码有什么问题?
终于得到答案,只需要在RequestQueryBuilder
上设置.query(false)
,这个boolean
参数是给encode
的,接缝像Angular的 HttpClient
class 对 URL 做了一些编码或其他事情,所以,无论如何
有效!这是代码:
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 i @nestjsx/crud-request.
欢迎任何意见...
更新 创建或更新
这是文档 创建一个 https://github.com/nestjsx/crud/wiki/Controllers#create-one-resource 更新一 https://github.com/nestjsx/crud/wiki/Controllers#update-one-resource
以下引导创建和更新很简单 只需将 POST 到 API 'api/producto/' (例如)并将对象作为请求中的正文 对于更新,仅使用 PUT 方法和带有模型 ID 'api/producto/1' 的 API(例如)