Добавление новых параметров пользовательского запроса в корзину Apis

У нас есть требование добавить новые параметры пользовательского запроса в apis корзины addEntries, updateEntries. Пожалуйста, помогите нам в том же, как мы можем добиться этого в spartacus storefeont? Ниже приведен пример использования addEntry.

addEntries: существующие: https://api.c39j2-walkersde1-d4-public.model-t.cc.commerce.ondemand.com/rest/v2/electronics-spa/ users / anonymous / carts / ca907c4f-7774-4b16-ba31-3cb1eec1eb82 / entries? code = 1992696 & qty = 1 & lang = en & curr = USD

**Requirement**: new parameters (parentEntryNumber=&planSKU=3453333)
      https://api.c39j2-walkersde1-d4-public.model-t.cc.commerce.ondemand.com/rest/v2/electronics-spa/users/anonymous/carts/ca907c4f-7774-4b16-ba31-3cb1eec1eb82/entries?code=1992696&qty=1&lang=en&curr=USD&parentEntryNumber='1'&planSKU=3453333

person user3165323    schedule 06.06.2020    source источник


Ответы (2)


Конечные точки OCC API настраиваются в Spartacus с помощью службы настройки. В документации описывается эта функция (раздел «Настройка конечных точек» ).

Вы можете найти конфигурацию конечной точки корзины по умолчанию в репозитории github.

person tobi-or-not-tobi    schedule 12.06.2020

Вам нужно поместить свои данные для пользовательского запроса в магазин ngrx. После того, как вам нужно продлить OccCartEntryAdapter.add, OccCartEntryAdapter.update. В моем примере кода SomeFacadeService выберите данные из магазина.

@Injectable()
export class OccCartEntryAdapter implements CartEntryAdapter {
  constructor(
    protected http: HttpClient,
    protected occEndpointsService: OccEndpointsService,
    protected converterService: ConverterService,
    protected someFacadeService: SomeFacadeService
  ) {}

  public add(
    userId: string,
    cartId: string,
    productCode: string,
    quantity: number = 1
  ): Observable<CartModification> {
    const toAdd = JSON.stringify({});

    const headers = new HttpHeaders({
      'Content-Type': 'application/x-www-form-urlencoded',
    });


    return this.someFacadeService.getParams(productCode).pipe(
      mergeMap((params) => {

      const url = this.occEndpointsService.getUrl(
        'addEntries',
        {
          userId,
          cartId,
        },
        { code: productCode, qty: quantity, ...params }
      );

      return this.http
        .post<CartModification>(url, toAdd, { headers })
        .pipe(this.converterService.pipeable(CART_MODIFICATION_NORMALIZER));
      })
    )
  }

person Aleksandr Terentev    schedule 26.11.2020