2013-03-27 63 views
4

我懷疑這是由端點中的以下錯誤(如果有效)引起的,但我也確定在某處有一個解決方法。爲什麼我的API沒有在部署中顯示?

https://code.google.com/p/googleappengine/issues/detail?id=9050&can=4&colspec=ID%20Type%20Component%20Status%20Stars%20Summary%20Language%20Priority%20Owner%20Log

重現步驟:

  1. 改變的方法名,方法的API名,或參數列表中的端點類。
  2. 運行endpoints.sh腳本來生成API文件。
  3. 檢查本地的API文件並觀察正在進行的更改。到現在爲止還挺好。
  4. 部署到服務器上應用程序的默認版本。
  5. 檢查日誌以調用/_ah/spi/BackendService.getApiConfigs。沒有錯誤!
  6. 轉到API資源管理器並清除瀏覽器緩存。檢查API。變化不在那裏。
  7. 直接在瀏覽器中請求API文件,例如。 https:// [app-id] .appspot.com/_ah/api/discovery/v1/apis/[api-name]/v1/rpc更改不存在。

沮喪與上述,我決定從頭開始完全從一個新的應用程序ID。我仍然看不到API Explorer中的API,並在上面的步驟7中的URL上獲得404!

這裏是我的端點類:

@Api(name = "ditto", version = "v1") 
public class CategoryEndpoint extends BaseEndpoint { 

    @SuppressWarnings("unused") 
    private static final Logger log = Logger.getLogger(CategoryEndpoint.class.getName()); 

    @ApiMethod(name = "category.list") 
    public WireCategory list() { 
     Category root = categoryDao.getRoot(); 
     WireCategory wireRootCategory = new WireCategory(root); 

     return wireRootCategory; 
    } 

} 

而這裏的產生.API文件:

{ 
    "extends" : "thirdParty.api", 
    "abstract" : false, 
    "root" : "https://1.eliot-dev-uk-ditto-do.appspot.com/_ah/api", 
    "name" : "ditto", 
    "version" : "v1", 
    "defaultVersion" : false, 
    "adapter" : { 
    "bns" : "https://1.eliot-dev-uk-ditto-do.appspot.com/_ah/spi", 
    "deadline" : 10.0, 
    "type" : "lily" 
    }, 
    "auth" : { 
    "allowCookieAuth" : false 
    }, 
    "frontendLimits" : { 
    "unregisteredUserQps" : -1, 
    "unregisteredQps" : -1, 
    "unregisteredDaily" : -1, 
    "rules" : [ ] 
    }, 
    "cacheControl" : { 
    "type" : "no-cache", 
    "maxAge" : 0 
    }, 
    "methods" : { 
    "ditto.category.list" : { 
     "path" : "list", 
     "httpMethod" : "GET", 
     "scopes" : [ ], 
     "audiences" : [ ], 
     "clientIds" : [ ], 
     "rosyMethod" : "ditto.api.CategoryEndpoint.list", 
     "request" : { 
     "body" : "empty" 
     }, 
     "response" : { 
     "body" : "autoTemplate(backendResponse)" 
     } 
    } 
    }, 
    "descriptor" : { 
    "schemas" : { 
     "WireCategory" : { 
     "id" : "WireCategory", 
     "type" : "object", 
     "properties" : { 
      "webSafePath" : { 
      "type" : "string" 
      }, 
      "prettyPath" : { 
      "type" : "string" 
      }, 
      "children" : { 
      "type" : "array", 
      "items" : { 
       "$ref" : "WireCategory" 
      } 
      }, 
      "path" : { 
      "type" : "array", 
      "items" : { 
       "type" : "string" 
      } 
      }, 
      "name" : { 
      "type" : "string" 
      }, 
      "id" : { 
      "type" : "string", 
      "format" : "int64" 
      } 
     } 
     } 
    }, 
    "methods" : { 
     "ditto.api.CategoryEndpoint.list" : { 
     "response" : { 
      "$ref" : "WireCategory" 
     } 
     } 
    } 
    } 
} 

此URL給了我404,我希望看到我的API JSON:

https://eliot-dev-uk-ditto-do.appspot.com/_ah/api/discovery/v1/apis/ditto/v1

這是在殺我!

編輯:

這是我剛剛發現通過App Engine的1.7.5和1.7.6中產生的.api文件之間的差異。不知道爲什麼網址已經改變。

ditto-v1.api from 1.7.6: 

    { 
     "extends" : "thirdParty.api", 
     "abstract" : false, 
     "root" : "https://1.eliot-dev-uk-ditto-do.appspot.com/_ah/api", 
     "name" : "ditto", 
     "version" : "v1", 
     "defaultVersion" : false, 
     "adapter" : { 
     "bns" : "https://1.eliot-dev-uk-ditto-do.appspot.com/_ah/spi", 
     "deadline" : 10.0, 
     "type" : "lily" 
     } 
     ... 

    ditto-v1.api from 1.7.5: 

    { 
     "extends" : "thirdParty.api", 
     "abstract" : false, 
     "root" : "https://eliot-dev-uk-ditto-do.appspot.com/_ah/api", 
     "name" : "ditto", 
     "version" : "v1", 
     "defaultVersion" : false, 
     "adapter" : { 
     "bns" : "http://eliot-dev-uk-ditto-do.appspot.com/_ah/spi", 
     "deadline" : 10.0, 
     "type" : "lily" 
     } 
     ... 
+0

我們認爲這是[1.7.6 SDK](http://googleappengine.googlecode.com/files /appengine-java-sdk-1.7.6.zip),我們正在努力達到此目的。您是否遇到與[1.7.5 SDK]類似的問題(http://googleappengine.googlecode.com/files/appengine-java-sdk-1.7.5.zip)? – bossylobster 2013-03-27 22:58:47

+0

切換回1.7.5確實可以解決問題。我可以在API資源管理器中看到我的API。也注意到App引擎版本中.api文件中的差異,我將在上面的問題中添加該差異。 – Eliot 2013-03-28 10:14:53

+1

似乎最好的解決方法是使用1.7.5 SDK,直到1.7.7 SDK發佈或手動更改'.api'文件中的'root'和'adapter.bns'值。抱歉給您帶來不便。 – bossylobster 2013-03-28 15:39:18

回答

2

正如你已經指出的那樣,這是由於在SDK 1.7.6一個奇怪的問題,它補充說,1.在.API文件端點根URL的開始......

我嘗試了新的SDK 1.7.7,它似乎解決了...

相關問題