Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

259
Visualizações
Angular2: uso de POST con angular-in-memory-web-api

Estoy jugando con angular-in-memory-web-api para Angular 2. Hasta ahora solo he estado usando llamadas GET y funciona bien.

La API a la que llamaré solo usa llamadas POST, así que comencé a reescribir mis llamadas GET a llamadas POST, pero luego dejaron de devolver los datos simulados. En mi función de prueba a continuación, quiero obtener los datos como un objeto TestResponse por una identificación:

 postTest(id: string): Promise<TestResponse> { return this.http .post(this.testUrl, JSON.stringify({ testId: id }), { headers: this.headers }) .toPromise() .then(response => response.json().data as TestResponse) .catch(this.handleError); }

Y los datos simulados:

 let test = [ { testId: 'e0d05d2b-3ec3-42ae-93bc-9937a665c4d6', missingData: 'qwerty', moreMissingData: 'asdfgh' }, { testId: 'dccef969-b9cf-410a-9973-77549ec47777', missingData: 'qwerty', moreMissingData: 'asdfgh' }, { testId: '20716fd7-1f50-4a12-af16-52c009bc42ab', missingData: 'qwerty', moreMissingData: 'asdfgh' } ];

Si entiendo esto correctamente, este código asumirá que quiero crear algo y, por lo tanto, devolverá mi testId junto con id: 1 (que ni siquiera sigue mi estructura de datos).

Entonces, mi pregunta es, ¿cómo puedo obtener mis datos simulados con llamadas POST?

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Es posible anular los métodos HTTP en la implementación del servicio de datos en memoria.

En el método anulado (por ejemplo, POST), es posible reaccionar al nombre de la colección (a través del parámetro RequestInfo ) para proporcionar una funcionalidad específica por punto final/colección.

Un ejemplo proporcionado trata solo con llamadas GET: https://github.com/angular/in-memory-web-api/blob/master/src/app/hero-in-mem-data-override.service.ts

A partir de eso, anular la funcionalidad POST podría verse así:

 import { InMemoryDbService, RequestInfo, STATUS, ResponseOptions } from 'angular-in-memory-web-api'; export class Your InMemoryDataService implements InMemoryDbService { // ... post(requestInfo: RequestInfo) { const collectionName = requestInfo.collectionName; if (collectionName === 'somedatatype') { // Intercept POST calls to the 'somedatatype' collection: // Eg add some fields to our entity that would be set in the backend, const data = requestInfo.utils.getJsonBody(requestInfo.req); const collection = requestInfo.collection; data.extraField = 'hello'; // set id to next highest number data.id = collection.map(item => item.id).reduce((cur, next) => cur > next ? cur : next) + 1; // ... add the item to the collection collection.push(data); // forge the response const options: ResponseOptions = { body: { data }, status: STATUS.OK, headers: requestInfo.headers, url: requestInfo.url }; // use createResponse$ to return proper response return requestInfo.utils.createResponse$(() => options); } // let the default POST handle all other collections by returning undefined return undefined; } }
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda