2016-09-25 4 views
2

환경
부트 스트랩 JavaScript UI 및 Google SQL Datastore를 사용하여 AppEngine Cloud Endpoints를 실행하고 있습니다. 문제
자바 스크립트가 gapi.client.load 그것은 404 API 탐색기의 작동을 얻고 로컬로 실행할 때 자바 스크립트가 작동 호출Google Cloud Endpoints API 가져 오기 404

... 그냥 내가 얻을 자바 스크립트를 통해 API를로드하려고 실패.

GET https://MyAppID.appspot.com/_ah/api/discovery/v1/apis/myAP…%2Cversion%2CrootUrl%2CservicePath%2Cresources%2Cparameters%2Cmethods&pp=0 404  () 
zu @ cb=gapi.loaded_0:83 
n @ cb=gapi.loaded_0:83C 
u @ cb=gapi.loaded_0:83 
(anonymous function) @ cb=gapi.loaded_0:84 
g @ cb=gapi.loaded_0:55 
c @ cb=gapi.loaded_0:46 

그것은 다음 그것이로드되지 않은 API 내에서 방법을 찾을 수 없기 때문에 "속성을 읽을 수 없습니다"의 다른 예외 다음 : 그것은 크롬에 나타나는

다음은 오류입니다.

코드

내 index.html 페이지의 코드 :

 function init() 
     { 

      apisToLoad = 2; 

      var callback = function() 
      { 
       if (--apisToLoad == 0) 
       { 
         signin(true, userAuthed); 
        } 
      } 

      gapi.client.load('oauth2', 'v2', callback); 
      //LOCALCHANGE (SWITCH BETWEEN LOCAL AND NOT) 
      gapi.client.load('myAPI', 'v1', callback, 'https://MyAppId.appspot.com/_ah/api'); 
      //gapi.client.load('myAPI', 'v1', callback, 'http://localhost:8080/_ah/api'); 

     } 

내가 맞아 생각, 그래서 나 또한 내 appengine.xml 포함거야 :

<?xml version="1.0" encoding="utf-8"?> 
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> 
<application>MyAppID</application> 
<version>1</version> 
<threadsafe>true</threadsafe> 
<use-google-connector-j>true</use-google-connector-j> 

<system-properties> 
    <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/> 
</system-properties> 
</appengine-web-app> 

및 내 web.xml :

<?xml version="1.0" encoding="utf-8" standalone="no"?><web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
<servlet> 
    <servlet-name>SystemServiceServlet</servlet-name> 
    <servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class> 
    <init-param> 
     <param-name>services</param-name> 
     <param-value>com.lthoi.myAPI</param-value> 
    </init-param> 
</servlet> 
<servlet-mapping> 
    <servlet-name>SystemServiceServlet</servlet-name> 
    <url-pattern>/_ah/spi/*</url-pattern> 
</servlet-mapping> 
<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
</welcome-file-list> 
</web-app> 

누구든지 오류가있을 수있는 곳이라면 다른 파일을 붙여도됩니다.

+0

앱 로그에서'/ _ah/spi/BackendService.getApiConfig' 또는'/ _ah/spi/BackendService.logMessages'에 대한 요청을 확인하십시오. 오류가 있으면 수정해야합니다. – saiyr

답변

0

나는 u와 같은 문제가 있습니다. ... 구글은 지금 꽤 많은 시간 동안이 문제가 발생했습니다 웹 애플리케이션 엔드 포인트와 결함을 가지고

그것에 대해 이전 게시물에 대한 링크를 보인다 https://github.com/google/google-api-javascript-client/issues/147

(SRY, 답변으로 게시물을하지 퍼팅 댓글, 방금 계정을 만들었습니다.)

+0

내 문제는 그 것과 다릅니다. 나는 그 문제에 주목했다. –

0

gapi.client.load는 API에 대한 메소드 정보를 얻기 위해 검색을 쿼리합니다 (404를 제공하는 URL의 검색 부분 참조). 현재 클라우드 엔드 포인트에서는 검색이 지원되지 않습니다.

해결하려면 API를 직접 호출 할 수 있습니다. 실제로는 제대로 작동하는지 여부가 확실하지 않습니다. 예 :

gapi.client.request({ 
    // Use your own service address, URI path, and query parameters. 
    'root': 'https://your-domain.appspot.com', 
    'path': '_ah/api/foo/bar', // use your own service path 
    'params': { 
    "foo": "bar" 
    } 
}).then(
    function(resp) { 
    console.log(resp); 
    }, 
    function(err) { 
    console.log(err); 
}); 

희망이 있습니다.

(이 답변의 이전 편집에서 CORS 기능, 실험 문서화 및 지원되지 않는 그러나 디버깅 목적으로이 답변에 사용합니다. CORS가 제거 된 수 있도록 라인을.)

+0

위의 내용을 참조하여 도움을 주신 것에 감사드립니다. 제 문제는 조금 더 기본적인 것이 었습니다 (대문자 사용 오류). –

0

그래서, 여기의 문제는 불행하게도 대문자 중 하나였습니다. 나는 올바른 URL을 가졌지 만 MyAPI.java에서 작성한 것처럼 'MyAPI'대신 'myAPI'를로드하려고했습니다. 이 값은 주석의 값이며이 경우 중요한 클래스 이름이 아닙니다. 바라기를 이것은 내가 멍청한 사람을 찾는다!