0

我已经在 angularjs 中构建了一个 Web 应用程序,并使用 Go 和 App Engine 构建了一个服务层,但我遇到了障碍。Angular 似乎无法识别 HTTP 状态 201(已创建),也无法识别它填充的 Location 标头,并且到目前为止我一直在使用的gorest库不会返回任何 POST 或 PUT 的正文数据,除了 a 上的标头201 创建响应。

我希望能够将新项目添加到我的应用程序的集合中,并让服务器使用它的唯一 ID 进行响应。

我可以在 POST 返回后发出单独的 GET 请求,但这效率低下且混乱。我还可以修复 gorest 代码以允许正文响应非 GET 动词,但这可能是我违反了惯用标准。

我在这里有什么遗漏吗?

4

2 回答 2

1

angular.js 的问题跟踪器上有一个已关闭的问题,他们几乎不关心该功能。

于 2014-09-27T03:22:23.237 回答
0

看起来我错过了什么。

只要它是 GET,gorest 库就会自动编组来自服务方法的返回类型。它不允许使用 POST 或 PUT 以这种方式返回数据。

但是我注意到 WriteAndOveride 方法可以允许在任何类型的调用上设置主体:

serv.ResponseBuilder().SetResponseCode(200).WriteAndOveride([]byte(responseBody))

虽然它感觉不是最干净的解决方案,但它肯定应该解除对我的阻碍。

于 2014-09-28T15:01:47.973 回答