2017-08-10 17 views
8

के साथ कोणीय 4 बैकएंडलेस विकास एचटीपी से एचटीपी क्लाइंट पर स्विच करने से पहले, मेरे पास मॉकबैकड का उपयोग करके बैकएंडलेस सेटअप था।नए एचटीपी क्लाइंट

import { 
    Http, BaseRequestOptions, Response, ResponseOptions, 
    RequestMethod, XHRBackend, RequestOptions 
} from '@angular/http'; 
import { MockBackend, MockConnection } from '@angular/http/testing'; 

import { subscribers } from '../jsons/subscribers.json'; 
import { TokenService } from '../../authentication/token.service'; 

export function mockBackendFactory(backend: MockBackend, options: BaseRequestOptions, 
    realBackend: XHRBackend) { 

    // configure fake backend 
    backend.connections.subscribe((connection: MockConnection) => { 
     // wrap in timeout to simulate server api call 
     setTimeout(() => { 
      let url = connection.request.url; 
      let method = connection.request.method; 

       if (url.endsWith('/demographic/subscriber') && method === RequestMethod.Get) { 
     let tokenService: TokenService = new TokenService(); 

     // get username from token 
     let username = tokenService.getUsername(); 

     // find if any subscriber matches login credentials 
     let filteredSubscriber = subscribers.filter(subscriber => { 
      return subscriber.username === username; 
     }); 

     // check to see if the user exists 
     if (filteredSubscriber.length) { 
      let subscriber = filteredSubscriber[0]; 
      connection.mockRespond(new Response(new ResponseOptions({ 
       status: 200, 
       body: { 
        "subscriber": { 
         "id": subscriber.id, 
         "firstName": subscriber.firstName, 
         "lastName": subscriber.lastName, 
         "username": subscriber.username, 
         "preferredEmail": subscriber.preferredEmail 
        } 
       } 
      }))); 
     } else { 
      // else return 400 bad request 
      connection.mockError(new Error('Unauthorized')); 
     } 

     return; 

     }, 500); 

    }); 

    return new Http(backend, options); 
} 

export let MockBackendProvider = { 
    provide: Http, 
    useFactory: mockBackendFactory, 
    deps: [MockBackend, BaseRequestOptions, XHRBackend] 
}; 

और मेरे core.module.ts में दाखिल मैं "प्रदाताओं" खंड में MockBackendProvider रखा: मैं एक फ़ाइल नकली backend.provider.ts उस तरह देखा कहा जाता था।

इससे मुझे जेसन प्रतिक्रियाओं को बहुत तेज़ी से नकल करने की अनुमति मिल जाएगी और मैंने पर्यावरण प्रदाता के आधार पर इस प्रदाता को टॉगल करने के लिए इसे सेटअप किया था।

जब मैंने एचटीपी क्लाइंट का उपयोग करने के लिए स्विच किया ... यह अब बैकएंड पैरामीटर नहीं लेता है क्योंकि यह एचटीपीएचंडलर का उपयोग करता है जो बैकएंड लेता है लेकिन मुझे इसे मॉकबैकेंड स्वीकार करने के लिए प्रतीत नहीं होता है।

मुझे विश्वास नहीं है कि मेरा वर्तमान सेटअप एचटीपी क्लाइंट का उपयोग करके किया जा सकता है और मैं इसके साथ ठीक हूं लेकिन मुझे नहीं पता कि नए मॉड्यूल के साथ बैकएंडलेस प्रवाह कैसे सेट करें।

किसी भी और सभी मदद की सराहना की जाएगी! यदि आपको और कोड देखने की आवश्यकता है तो कृपया मुझे बताएं।

+1

हैलो शॉन, तो आप इस पर कोई प्रगति किया? मुझे केवल संसाधनों में परीक्षण करने के लिए संसाधन मिल गए हैं, लेकिन यह बैकएंडलेस कैसे नहीं करें। आदर्श रूप में मैं उत्पादन, विकास-नकली और विकास के साथ-साथ बैकएंड के बीच स्विच करने के लिए 'पर्यावरण' सेटिंग्स का उपयोग करना चाहता हूं। – skofgar

+1

@skofgar मैंने अभी अपना समाधान एक उत्तर के रूप में पोस्ट किया है। मेरा उदाहरण चेकआउट करें। मुझे अपने सेटअप के साथ किसी भी प्रश्न का उत्तर देने में खुशी हुई। –

+0

धन्यवाद शॉन! मैंने इंटरसेप्टरों को भी देखना शुरू कर दिया, लेकिन जहां तक ​​आपने किया उतना दूर नहीं मिला। आपका समाधान प्रदान करने के लिए धन्यवाद! – skofgar

उत्तर

11

मैंने इसे एक इंटरसेप्टर का उपयोग करके हल किया है।

मैं किसी कि देखने के लिए कैसे मैं इस काम के लिए है चाहते हैं के लिए एक उदाहरण मज़ाक उड़ाया है https://github.com/GetDaStick/backendless-example/blob/master/src/app/core/http/mock-http.interceptor.ts

+0

धन्यवाद! आपका उदाहरण बहुत उपयोगी था! इच्छा है कि मैं दो बार ऊपर उठ सकता हूं – CodyBugstein

संबंधित मुद्दे