javascript - Http Post using .map doesnt work when service return Http 400 -
from typescript code, invoke webservice written in c#. typescript code looks this, , works expected when service returns http200, when server rejects credentials , throws http 400, not break inside map function.
return this.http.post(this.authenticationendpoint, params) .map((response:response) => { let resp = response; let token = response.json() && response.json().access_token; if(token){ this.token = token; localstorage.setitem('user', json.stringify({username: username, token:token})); return true; } return false; })
looking @ definition of response
class defines properties status, statustext
, on. given limited knowledge of angular , typescript assume regardless of http code returned service, break inside map
function? how can handle case? function return observable<boolean>
you need catch
observable errors here's example:
export class apigateway { baseurl = "https://myapi.com"; // or pulled file constructor(private http: http) {} get(path, params) { showloadingindicator(); let headers = this.createmyspecialheaders(); let options = { headers: headers } // , whatever else need generalize let fullurl = this.baseurl + path + '?' + this.urlencode(params) `; return this.get(path, params, options) .do(() => hideloadingindicator()) .map(res => res.json()) .catch(err => { hideloadingindicator(); // show error message or whatever app api errors etc // rethrow error, depending on use case }) } }
Comments
Post a Comment