[英]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.