Angular2+:我能否使一个getter作为我的POST请求的一部分出现?
创始人
2024-10-22 06:30:56
0

可以使用Interceptor来修改请求体,将getter转换为可用于POST请求的数据格式。

以下是一个示例Interceptor:

import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler } from '@angular/common/http';

@Injectable()
export class GetterInterceptor implements HttpInterceptor {
  intercept(req: HttpRequest, next: HttpHandler) {
    // 如果请求方法是POST并且请求体中包含getter,则将其转换为普通的数据对象
    if (req.method === 'POST' && req.body instanceof Object) {
      let newBody = {};
      for (let key in req.body) {
        if (req.body.hasOwnProperty(key)) {
          let value = req.body[key];
          if (typeof value === 'function') {
            // 调用getter并将结果作为普通值添加到请求体中
            newBody[key] = value();
          } else {
            newBody[key] = value;
          }
        }
      }
      // 修改请求对象的body
      req = req.clone({
        body: newBody
      });
    }
    return next.handle(req);
  }
}

在需要使用该Interceptor的模块中,将其提供给HttpClientModule:

import { NgModule } from '@angular/core';
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { GetterInterceptor } from './getter.interceptor';

@NgModule({
  imports: [
    HttpClientModule
  ],
  providers: [
    {
      provide: HTTP_INTERCEPTORS,
      useClass: GetterInterceptor,
      multi: true
    }
  ]
})
export class MyModule { }

这样,在发送POST请求时,就可以将getter作为请求体的一部分发送了:

import { HttpClient } from '@angular/common/http';

class MyService {
  constructor(private httpClient: HttpClient) {}

  save(model: MyModel) {
    return this.httpClient.post('/api/save', model);
  }
}

class MyModel {
  name: string;
  get age() {
    return this._age;
  }
  set age(value: number) {
    this._age = value;
  }

相关内容

热门资讯

透视教程书!pokemmo脚本... 透视教程书!pokemmo脚本辅助(透视)pokemmo脚本辅助器下载(辅助)本来是有神器(哔哩哔哩...
透视教程书!大菠萝手游辅助(透... 透视教程书!大菠萝手游辅助(透视)epoker底牌透视(辅助)竟然存在有软件(哔哩哔哩)一、大菠萝手...
透视秘籍!wepoker辅助器... 透视秘籍!wepoker辅助器怎么弄(AApoker透视)原来是真的有辅助工具(哔哩哔哩)wepok...
透视教材!哈糖大菠萝有挂吗(透... 透视教材!哈糖大菠萝有挂吗(透视)newpoker怎么安装脚本(辅助)真是真的是有教程(哔哩哔哩)1...
透视经验!pokemmo免费脚... 透视经验!pokemmo免费脚本(透视)xpoker辅助(辅助)真是是有神器(哔哩哔哩)1、这是跨平...
透视秘籍!红龙poker辅助(... 透视秘籍!红龙poker辅助(透视)wepoker透视有吗(辅助)竟然是有工具(哔哩哔哩)1、wep...
透视总结!wejoker辅助器... 透视总结!wejoker辅助器怎么卖(HHpoker买挂)都是真的有辅助教程(哔哩哔哩)1.wejo...
透视总结!智星德州插件最新版本... 透视总结!智星德州插件最新版本更新内容详解(透视)约局吧透视挂下载(辅助)果然一直都是有插件(哔哩哔...
透视步骤!pokerrrr2辅... 透视步骤!pokerrrr2辅助(透视)德州辅助工具到底怎么样(辅助)真是有软件(哔哩哔哩)1、完成...
透视模板!wepoker黑侠辅... 透视模板!wepoker黑侠辅助器(HHpoker插件)原来是有辅助插件(哔哩哔哩)1、操作简单,无...