簡體   English   中英

Google Cloud端點在刪除時出現HTTP 500錯誤

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

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