Почему мой API не отображается при развертывании?
Я подозреваю, что это вызвано следующей ошибкой в конечных точках (если она действительна), но я также уверен, что где-то есть обходной путь.
Действия по воспроизведению:
Измените имя метода, имя API метода или список параметров в классе конечных точек.Запустите сценарий endpoints.sh для создания файлов API.Проверяйте файлы API локально и наблюдайте за изменениями, которые там находятся. Все идет нормально.Разверните на сервере версию приложения по умолчанию.Проверьте журналы для вызова /_ah/spi/BackendService.getApiConfigs. Там нет ошибок!Зайдите в API Explorer и очистите кеш браузера. Проверьте API. Изменения нет.Запросите файл API прямо в браузере, например. https: // [идентификатор приложения] .appspot.com / _ah / api / discovery / v1 / apis / [имя-api] / v1 / rpc. Изменения не существует.Разочарованный вышесказанным, я решил начать с нуля новый идентификатор приложения. Я все еще не вижу API в API Explorer и получаю 404 на URL в шаге 7 выше!
Вот мой класс конечной точки:
@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
Это убивает меня!
РЕДАКТИРОВАТЬ:
Вот разница, которую я только что заметил между файлом .api, сгенерированным App Engine 1.7.5 и 1.7.6. Не уверен, почему URL-адреса были изменены.
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"
}
...