2017-02-10 2 views
0

Also, das ist mein erster Beitrag auf Stackoverflow, also bitte verzeiht mir, wenn ich einfach nicht für diese hart genug suchen, aber ...URLSearchParams Anfügen zusätzliche & auf URL-Parameter Angular2 + Ionic2

ich bin Gebäude einfache Login-Seite auf unseren Firmen Ionic2 + Angular2 App. Das Login-Formular führt einen HTTP-Aufruf an unser Backend aus, der mit den Anmeldeinformationen des Benutzers antwortet, wenn sie korrekt sind, dann wird der Benutzer auf die Homepage zugelassen, wenn er keinen 401-Fehler erhält.

Letzte Nacht, als ich es auf einer Windows-Maschine fertig verkabelte, funktionierte alles perfekt. Aber bei der Arbeit verwenden wir Macs und so, wenn ich ionic run android und/oder ionic serve --lab es die API-Anrufe sind nicht korrekt mit den Parametern angehängt. Um zu zeigen:

private theUrl = 'http://theurl.com/mobileapi/getUser.cfm?'; 

public onlogin(email: string, password: string) { 
    let params: URLSearchParams = new URLSearchParams(); 
    params.set('email', email); 
    params.set('password', password); 

    return this.http.get(this.theUrl, { search: params }) 
    .map(res => res.json()) 
} 

Dieser Code verwendet URLSearchParams die URL-Parameter zu setzen und übergibt sie dann direkt in die http.get() Anfrage als Option. - Wir geben die E-Mail und das Passwort von der eckigen Front-End-Form aus. Jetzt

, wenn die App serviert/lief der API-Aufruf wie folgt aussehen endet:

http://theurl.com/mobileapi/getUser.cfm?&email=xxxx&password=xxxxx

Der Punkt Ich bin an der .cfm? & Teil der URL. Ich weiß, dass es nicht so für einen Anruf formatiert werden soll ... Fehle ich hier etwas, um die URL-Parameter richtig zu formatieren?

Dank

Antwort

0

weil Ihre URL haben ? ->private theUrl = 'http://theurl.com/mobileapi/getUser.cfm?'; so, wenn Angular Build params, wird es als param haben markieren, dann werden diese die URL anhängen wie Sie.

mit diesem statt:

private theUrl = 'http://theurl.com/mobileapi/getUser.cfm'; 

mehr von diesem Code lesen:

if (search.length > 0) { 
    let prefix = '?'; 
    if (this.url.indexOf('?') != -1) { 
    prefix = (this.url[this.url.length - 1] == '&') ? '' : '&'; 
    } 
    // TODO: just delete search-query-looking string in url? 
    this.url = url + prefix + search; 
} 

https://github.com/angular/angular/blob/2.4.7/modules/%40angular/http/src/static_request.ts#L81-L88

+0

Vielen Dank, das das Problem gelöst! – Evanangel

Verwandte Themen