簡體   English   中英

Angular 5 InMemoryWebAPI-如何使用HTTP動詞模擬CRUD?

[英]Angular 5 InMemoryWebAPI - How to simulate CRUD with HTTP Verbs?

內存Web API上使用Angular docs / tutorial時 ,我想返回一些指示請求成功或失敗的JSON值。 即:

{success:true, error:""}

要么

{success:false, error:"Database error"}

但是,示例中in-memory-data.service.ts文件中的代碼僅具有一種方法: createDb()

如何更新服務代碼以不同於GET響應PUT / POST / DELETE請求?

注意在實際的/生產環境中,后端將是PHP,並且我們可以按照需要的任何方式(使用正確的狀態代碼)返回這些值。 這個問題專門針對使In Memory Web API模擬那些響應。

例:

執行中:

return = this.http.post(url,someJsonData,httpHeaders);

我希望返回的是: {success:'true',id:1234} ,HTTP狀態碼為200。

以后,要刪除剛剛創建的記錄:

url = `/foo/` + id + '/'; // url = '/foo/1234/';
this.http.delete(url);

這實際上並不需要JSON元數據響應。 HTTP狀態代碼200就足夠了。

如何更新服務代碼以不同於GET響應PUT / POST / DELETE請求?

服務器將始終響應您的請求。 因此,如果您觸發Ajax請求,則它可能是已知的HTTP Methods (例如POST,GET,PUT ...)。 之后,您將等待答案。

/** POST: add a new hero to the database */
addHero (hero: Hero): Observable<Hero> {
  return this.http.post<Hero>(this.heroesUrl, hero, httpOptions)
    .pipe(
      catchError(this.handleError('addHero', hero))
    );
}

/** GET: get a new hero from the database */
getHero (heroId: number): Observable<Hero> {
  return this.http.get(this.heroesUrl + '/' + heroId)
}

我找到了我想要的答案:這是HttpInterceptors。

這篇博客文章相應的github回購演示了如何在Angular 2/5中模擬CRUD操作而無需設置測試服務器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM