如何在Battlesnake中迁移到API 1?

问题描述 投票:0回答:1

Battlesnake 说我的 Battlesnake 使用的是 Battlesnake API 的版本 0。 它说这个版本现已弃用,将来将不再受支持。参考页面告诉我实现 HTTP 调用来玩游戏。

这是Python的原始代码:

    @cherrypy.expose
    @cherrypy.tools.json_out()
    def index(self):
        return {
    "apiversion": "1",
    "author": "your-username",
    "color": "#888888",
    "head": "default",
    "tail": "default"
    } 
    @cherrypy.expose
    @cherrypy.tools.json_in()
    def start(self):
        data = cherrypy.request.json
        print("START")
        return "ok"
    @cherrypy.expose
    @cherrypy.tools.json_in()
    @cherrypy.tools.json_out()
    def move(self):
        data = cherrypy.request.json
        possible_moves = ["up", "down", "left", "right"]
        move = random.choice(possible_moves)
        print(f"MOVE: {move}")
        return {"move": move}
    @cherrypy.expose
    @cherrypy.tools.json_in()
    def end(self):
        data = cherrypy.request.json
        print("END")
        return "ok"

指令是这样说的:

第 1 步:实施根端点 旧的 POST /ping 端点现已弃用,可以从您的 Battlesnake 中删除。 相反,Battlesnakes 必须实现一个新的 GET / 端点,该端点将返回有关 Battlesnake 的元数据。现在这就是蛇的定制方式以及它们将识别其支持的 API 版本的地方。
{ “API版本”:“1”, “作者”:“我的用户名”, “颜色”:“#888888”, “头”:“默认”, “尾部”:“默认” } 第 2 步:更新/启动端点 API 版本 1 Battlesnakes 的游戏引擎将忽略 POST /start 端点中的任何自定义数据。您可以删除当前为响应 /start 请求而发送的任何有效负载。

我无法理解如何进行更改:(

python api
1个回答
0
投票

实现 Battlesnake API 的最新参考文档 此时在这里:https://docs.battlesnake.com/api

我建议从 Python Starter 示例开始并从那里开始,因为官方入门包应该是最新的。

对我来说,实际上您似乎已经正确实施了升级 API 处理程序的步骤。 Battlesnake 可能正在缓存信息以了解您的蛇使用哪个 API 版本,您可能只需要更新您的蛇并在部署新代码后刷新,Battlesnake 应该停止抱怨 API 版本。您可以在登录后在 Battlesnake Play 网站上执行此操作,并编辑您的蛇:

https://play.battlesnake.com/

但为了完整起见,我将回答如何升级到 v1 的问题。

您引用了文档中的一些说明,所以让我们将其分解为更容易理解的部分。

第 1 步:实施根端点

旧的

POST /ping
端点现已弃用,可以从您的 Battlesnake 中删除。相反,Battlesnakes 必须实现一个新的
GET /
端点,该端点将返回有关 Battlesnake 的元数据。现在这就是蛇的定制方式以及它们将识别其支持的 API 版本的地方。

{
  "apiversion": "1",
  "author" :"my_user_name",
  "color": "#888888",
  "head": "default",
  "tail": "default"
}

此步骤涉及删除旧的

/ping
端点,并将其替换为新的
/
端点。您提供的代码不包含路由器,这意味着我无法知道哪些 HTTP URL 模式被路由到您提供的处理程序函数。我假设 CherryPy 的暴露装饰器为你做了这个。我没有看到
ping
函数(旧端点),但确实看到了
index
函数(可能是新端点),并且您已将返回的 JSON 结构更新为新的 API v1 格式,因此处理程序部分应该已经很好了。

    @cherrypy.expose
    @cherrypy.tools.json_out()
    def index(self):
        return {
    "apiversion": "1",
    "author": "your-username",
    "color": "#888888",
    "head": "default",
    "tail": "default"
    } 

此步骤似乎完成正确。

第 2 步:更新
/start
端点

API 版本 1 Battlesnakes 的游戏引擎将忽略

POST /start
端点中的任何自定义数据。您可以删除当前为响应
/start
请求而发送的任何有效负载。

此步骤解释了在 API v0 中,从启动请求发回的响应很重要,但在 API v1 中,它不再重要。您的处理程序是:

    @cherrypy.expose
    @cherrypy.tools.json_in()
    def start(self):
        data = cherrypy.request.json
        print("START")
        return "ok"

所以看来这一步也是正确执行的。当您除了成功状态之外不需要返回任何内容时,您将返回字符串“ok”。但这样做应该不会有什么坏处。在以前的 API 版本中,您可以在此处包含个性化数据,例如蛇的头部、尾巴和颜色,这些数据现在由根/索引处理程序处理,如步骤 1 中所示。

© www.soinside.com 2019 - 2024. All rights reserved.