5

このブログ投稿Generate AppEngine BackEndで説明されているように、を使用して Eclipse で Google エンドポイント AppEngine プロジェクトを生成しました。ただし、その投稿に記載されていないこと、および公式の Google ドキュメントの説明が不十分であることは、ローカルでそのサービスにアクセスできる URL はどれですか?

生成されたサービスには、DeviceInfoEndpoint と呼ばれる 1 つの生成されたエンドポイントがあります。コードと web.xml のコードを以下に示します。ポート 8888 でローカルにホストしている場合、どの URL で listDeviceInfo() にアクセスする必要がありますか? 私は次のことを試しました:

  • http://localhost:8888/_ah/api/deviceinfoendpoint/v1/listDeviceInfo=> 404
  • http://localhost:8888/_ah/spi/deviceinfoendpoint/v1/listDeviceInfo=> 405 GET はサポートされていません
  • http://localhost:8888/_ah/spi/deviceinfoendpoint/v1/DeviceInfo=> 405 GET (...)
  • http://localhost:8888/_ah/spi/v1/deviceinfoendpoint/listDeviceInfo= > 405 GET(...)

DeviceInfoEndpoint.java の抜粋:

@Api(name = "deviceinfoendpoint")
public class DeviceInfoEndpoint {

/**
 * This method lists all the entities inserted in datastore.
 * It uses HTTP GET method.
 *
 * @return List of all entities persisted.
 */
@SuppressWarnings({ "cast", "unchecked" })
public List<DeviceInfo> listDeviceInfo() {
    EntityManager mgr = getEntityManager();
    List<DeviceInfo> result = new ArrayList<DeviceInfo>();
    try {
        Query query = mgr
                .createQuery("select from DeviceInfo as DeviceInfo");
        for (Object obj : (List<Object>) query.getResultList()) {
            result.add(((DeviceInfo) obj));
        }
    } finally {
        mgr.close();
    }
    return result;
}
}

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.example.dummyandroidapp.DeviceInfoEndpoint</param-value>
  </init-param>
 </servlet>
 <servlet-mapping>
  <servlet-name>SystemServiceServlet</servlet-name>
  <url-pattern>/_ah/spi/*</url-pattern>
 </servlet-mapping>
</web-app>
4

2 に答える 2

7

API リクエスト パスは、通常、次のように準拠する必要があります。

http(s)://{API_HOST}:{PORT}/_ah/api/{API_NAME}/{VERSION}/

特定のリソースのフェッチ/更新/削除に関心がある場合は、ID を末尾に追加します。あなたの例では、クエリを実行する必要があることを示唆しています:

http://localhost:8888/_ah/api/deviceinfoendpoint/v1/

list(リクエストを行っているときにマップされますGET)。

一般に、で入手できる API Explorer を使用/_ah/_api/explorerすると、これらの URL を簡単に検出してクエリを実行できます。

于 2013-02-04T21:13:44.523 に答える