相关疑难解决方法(0)

标准的JSON API响应格式?

是否存在用于从API构造JSON响应的标准或最佳实践?显然,每个应用程序的数据都是不同的,所以我不关心,而是"响应样板",如果你愿意的话.我的意思的一个例子:

成功要求:

{
  "success": true,
  "payload": {
    /* Application-specific data would go here. */
  }
}
Run Code Online (Sandbox Code Playgroud)

请求失败:

{
  "success": false,
  "payload": {
    /* Application-specific data would go here. */
  },
  "error": {
    "code": 123,
    "message": "An error occurred!"
  }
}
Run Code Online (Sandbox Code Playgroud)

json response request

642
推荐指数
11
解决办法
50万
查看次数

AWS API网关 - CORS + POST无法正常工作

CORS真的让我发疯,我真的没有想法让它变得有用.

我创建了一个简单的APIG Api,其中包含1个名为'abc'的资源,并添加了2个方法GETPOST,其中Authorization设置为NONE,API Key Required设置为false,所有内容都部署到名为'dev'的阶段.

当然,我在两种方法上都启用了CORS,我看到在OPTIONS方法和Access-Control-Allow-中添加了3个标题Access-Control-Allow-Origin,Access-Control-Allow-HeadersAccess-Control-Allow-Methods Origin添加到POSTGET方法中.

两个调用都映射到相同的lambda函数,该函数只是将"Hello from Lambda"文本输出到控制台.

然后我创建了一个简单的html页面,我在S3上作为静态网站托管,使用Route53指向一个域,并开始使用jQuery $ .ajax测试API 来进行调用.

一切看起来都很简单,直截了当,正如文档中所解释的那样,除了GET工作并按预期将文本输出到控制台.该POST版本导致以下错误:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://example.com' is therefore not allowed access. The response had HTTP status code …

api amazon-web-services cors aws-api-gateway

20
推荐指数
6
解决办法
1万
查看次数

AWS错误:代理集成无法配置为转换响应

我是Amazon Lambda-API实现的初学者。

我只是在部署一个非常简单的API:一个非常简单的lambda函数,使用Python 2.7打印我用API Gateway触发的“ Hello World”。但是,当我单击“调用URL”链接时,它告诉我“ {” message”:“内部服务器错误”} “。

因此,我试图查看这里出了什么问题,所以我单击了API本身,然后在“方法执行”中看到以下灰色:“ 集成响应:无法配置代理集成来转换响应。

在此处输入图片说明

我测试了许多不同的配置,但仍然遇到相同的错误。我不知道为什么这一步是灰色的。

api lambda amazon-web-services aws-lambda aws-api-gateway

7
推荐指数
2
解决办法
4371
查看次数

为什么JSON应该有status属性

我偶然发现了一种我发现非常普遍的做法.我甚至找到了一个给这个名字命名的网页,但我忘了这个名字,而且我再也找不到谷歌那个页面了.

实践是来自REST服务的每个JSON响应都应具有以下结构:

{
    "status": "ok",
    "data": { ... }
}
Run Code Online (Sandbox Code Playgroud)

或者在错误的情况下:

{
    "status": "error",
    "message": "Something went wrong"
}
Run Code Online (Sandbox Code Playgroud)

我的问题:为什么在JSON中需要这样的"状态"属性是什么意思?在我看来,这是为HTTP状态代码制作的.

REST使用客户端和服务器之间的HTTP通信方式,例如,应使用"DELETE"动词进行删除.同样,如果找不到资源,则应使用404等.因此,如果符合这种思路,任何错误情况都应在HTTP状态中正确编码.

是否有特定原因在错误情况下返回HTTP 200状态代码并在JSON中出现错误?它似乎只是在处理响应时使javascript条件分支更复杂.

我发现了一些状态可以"重定向"以告诉应用程序重定向到某个URL的情况.但是如果使用了正确的HTTP状态代码,浏览器将"免费"执行重定向,从而正确维护浏览历史记录.

我想主要提出两个可能的答案:

  • 要么是有两个争吵社区,每个社区都有自己喜欢的方法(使用HTTP状态总是与使用HTTP状态永远不会)
  • 或者我错过了一个重点,你会告诉我虽然在某些情况下应该使用HTTP状态,但是在某些特定情况下,HTTP状态不适合并且"status"JSON属性发挥作用.

rest json

5
推荐指数
2
解决办法
458
查看次数