[英]Google cloud endpoints HTTP 500 error on delete
Google Cloud端點在刪除時出現HTTP 500錯誤
我生成了一個Google Cloud Endpoint類,該類為我玩標准的CRUD方法,包括delete方法:
public Member removeMember(@Named("id") Long id) {
PersistenceManager mgr = getPersistenceManager();
Member member = null;
try {
member = mgr.getObjectById(Member.class, id);
mgr.deletePersistent(member);
} finally {
mgr.close();
}
return member;
}
但是,當我調用DELETE時,會返回HTTP 500錯誤:
HTTP ERROR 500
Problem accessing /_ah/spi/Members.removeMember. Reason:
com.google.appengine.repackaged.org.codehaus.jackson.map.JsonMappingException: Cannot read fields from a deleted object (through reference chain: com.mylodge.contracts.masonry.Member[\"degree\"])
如何避免此HTTP 500錯誤?
旁白:對我來說,無論如何返回被刪除的對象似乎是不合邏輯的。 HTTP 200 OK會更合適嗎?
更新:我嘗試改為返回null,並嘗試使該方法成為VOID。 但是這兩個都會產生一個HTTP響應
500 No content to map to Object due to end of input
如果您不想要該對象,請不要將其返回。 這是這里最簡單的解決方案。 我將向Eclipse的Google Plugin小組建議,他們更改模板以默認情況下不返回已刪除的對象。
如果您確實想要刪除的對象,我認為您正在遇到JDO的延遲加載。 您的財產degree
正在序列化時加載。 但是,由於基礎數據存儲對象已被刪除,因此無法訪問它。 您需要在刪除屬性之前顯式訪問該屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.