【问题标题】:Angular Request how it works for nestjsx/crudAngular 请求它如何用于 nestjsx/crud
【发布时间】:2020-12-23 10:37:19
【问题描述】:

我已经尝试了好几个小时才能让它工作,但我做不到,我希望你们中的一些人能回答我的问题,因为它必须非常简单,而且我是初学者 我在 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 编码有关,并尝试对其进行编码/解码,但没有成功。

我还尝试使用文档中引用的FrontEnd usage 中的@nestjsx/crud-requestRequestQueryBuilder 类,并将其附加到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

我不明白我是如何用我的 Postmand 做到这一点的,而且它可以工作!

api/producto/?fields=id,refFabr,refCliente,descrCorta,imagen&filter=coleccion.id||$eq||6

我怎样才能让它工作,我的代码有什么问题?

【问题讨论】:

    标签: angularjs parameters request http-get query-parameters


    【解决方案1】:

    终于得到了答案,只需要在RequestQueryBuilder上设置.query(false),这个boolean参数是针对encode的,像Angular的HttpClient类这样的接缝对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

    按照该指南创建和更新很简单 只需对 API 'api/producto/' (例如)进行 POST 操作,并将对象作为请求中的主体 对于更新,只需使用 PUT 方法和模型 id 为“api/producto/1”的 API(例如)

    【讨论】:

    • 我完全理解如何根据您的解释提出选择请求,但是如何提出尝试创建或更新元素而不只是阅读它的请求?
    • 我添加了一些额外的信息来帮助你。 @Iabelle
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    相关资源
    最近更新 更多