相关疑难解决方法(0)

自定义HTTP标头:命名约定

我们的一些用户要求我们在我们发送请求的HTTP标头中包含与其帐户相关的数据,甚至是我们从API获得的响应.在命名,格式化等方面添加自定义HTTP标头的一般惯例是什么?

另外,您可以随意发布您在网上偶然发现的任何智能用途; 我们正试图用最好的目标来实现这个目标:)

http http-headers

1051
推荐指数
6
解决办法
34万
查看次数

REST API服务为验证失败返回的适当HTTP状态代码是什么?

每当我在基于Django/Piston的REST API应用程序中遇到验证失败时,我目前正在返回401 Unauthorized .看过HTTP状态代码注册表后 我不相信这是验证失败的合适代码,你们都推荐什么?

  • 400错误请求
  • 401未经授权
  • 403禁止
  • 405方法不允许
  • 406不可接受
  • 412前提条件失败
  • 417期望失败
  • 422不可处理的实体
  • 424依赖失败

更新:上面的"验证失败"表示应用程序级别数据验证失败,即错误指定日期时间,虚假电子邮件地址等.

validation rest http-status-codes

373
推荐指数
5
解决办法
20万
查看次数

RESTful服务,验证失败后如何响应?

我有一些服务,需要一些实体,需要保存/更新这个实体:

http://myhost.com/rest/entity
Run Code Online (Sandbox Code Playgroud)

我使用POST并提交JSON.在内部服务中,它检测到传递的实体不好.无效,订单传入不存在的客户等.

我该怎么回复?HttpCode.NotFound?或者其他人?你怎么回答这些事情?

rest http

19
推荐指数
2
解决办法
2万
查看次数

如何在插入违反唯一索引的MongoDB文档时捕获错误?

我正在构建一个MEAN应用程序.

这是我的用户名架构,用户名应该是唯一的.

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

module.exports = mongoose.model('User', new Schema({ 
    username: { type: String, unique: true }
}));
Run Code Online (Sandbox Code Playgroud)

在我的帖子路线上,我像这样保存用户:

app.post('/authenticate', function(req, res) {
        var user = new User({
            username: req.body.username
        });

        user.save(function(err) {
            if (err) throw err;

            res.json({
                success: true
            });

        });
    })
Run Code Online (Sandbox Code Playgroud)

如果我再次使用相同的用户名发布,我会收到此错误:

MongoError:insertDocument ::由:: 11000引起的E11000重复键错误索引:

有人可以解释如何发送json而不是错误 { succes: false, message: 'User already exist!' }

注意:在我发布用户后,我将自动进行身份验证,不需要密码或其他内容.

javascript mean mongoose mongodb express

17
推荐指数
3
解决办法
2万
查看次数

资源创建POST由于现有匹配资源而失败时的HTTP响应代码

想象一下,我们有一个API,可以通过POST创建一个新的Employee

www.example.com/api/employees
Run Code Online (Sandbox Code Playgroud)

一名员工可以被描述为,

{
  name: "John Smith",
  tax_number: "ABC123"
}
Run Code Online (Sandbox Code Playgroud)

税号对所有人来说都是独一无二的.如果创建了一个创建,并且已存在一个名称和税号与现有记录匹配的记录,则可以安全地假设请求者想要返回该记录的引用(使用它的内部id和其他数据,客户端可能不会有,例如,创建于,更新于).

HTTP状态代码用于返回该资源的内容是什么?我想重定向可以用于返回id,但我更喜欢将整个对象包含在响应中.

这种情况对于简单的重复错误是唯一的,因为如果尝试重复,则意味着您希望创建的记录已经存在 - 而不是与现有记录冲突.

api rest post http http-status-codes

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

从Rails的JSON响应中寻找用于Angular中的通用错误处理的范例

我正在构建一个应用程序,它被构建为一个Rails服务器应用程序,为客户端提供RESTful api.Rails服务器使用RABL.客户端是一个Angular JS客户端,执行标准的$ http调用(获取,放置等).

偶尔我的Rails服务器会产生一个错误(假设附加到对象的验证错误)甚至没有错误,在这种情况下我想向用户显示一些东西 - 错误例如,"记录没有保存,因为...... "或"记录已成功更新".

我试图在Rails端和Angular /客户端都映射出一个模式来处理这个问题.

至于Rails:

  • 我当然可以在每个RABL文件中传回一个节点来包含错误数组
  • 我还可以通过在返回之前检入控制器来返回不同的RABL
  • 大多数建议使用HTTP代码(这是有道理的),按照这里 (虽然似乎没有成为代码的一致用途的东西,像一个验证错误).

至于Angular:

我想我希望我不必在这里重新发明轮子,有人可以指出我目前使用和建议(和本地化)的模式.

api error-handling json ruby-on-rails angularjs

13
推荐指数
1
解决办法
4068
查看次数

如何处理REST API中的大量资源

我正在将一个REST接口用于现有应用程序,我很好奇最合适的解决方案是什么来处理资源,如果要检索它们将返回过多的数据.

该应用程序是现有的时间表系统,其中一个资源是一组用户的"时间段".这些资源的示例URI是:

/users/44/timeslots/
Run Code Online (Sandbox Code Playgroud)

我已经阅读了很多与如何为此资源提供过滤以检索子集有关的问题,我已经有了解决方法.

我想知道如何(或者如果)我应该处理在上面的URI上发出GET将从数十或数十万行返回兆字节数据的情况,并且需要相当数量的服务器资源来实际响应第一名.

  • 在这些情况下,是否存在惯例使用的HTTP响应?
    我发现HTTP代码413与Request实体相关,该实体太大,但不适用于当Response实体太大时
  • 是否存在限制响应或告诉客户这是一个愚蠢的请求的替代约定?
  • 我应该让服务器遵守这个大规模的请求吗?

编辑:要清楚,我已经过滤和拆分实现的资源,并考虑了其他大型集合资源的分页.我想适当地回应那些没有意义的请求(显然是由构建URI的客户端请求的).

rest

12
推荐指数
1
解决办法
7728
查看次数

如果REST API方法失败,我应该返回200,400或500 HTTP状态消息吗?

当用户向我的API提交无效数据时(通常通过Javascript + JSON),我想知道我应该回复哪个HTTP响应代码.

我是否应该返回带有错误的HTTP 200响应 - 或者我的服务器是否应该响应400或500错误,因为请求实际上由于某些错误数据而无法验证?

似乎400错误是要走的路,因为"4xx类状态代码适用于客户端似乎错误的情况" - 维基百科

但是,要记住的一件事是,大多数人使用像jQuery这样的框架,当AJAX请求响应200以外的任何状态代码时,需要您指定备用回调.

api ajax http-headers

11
推荐指数
1
解决办法
4923
查看次数

在REST服务中返回true/false?

我正在设计REST服务,需要检查是否正确输入了地址.我在想的是如何设计REST接口来检查完整的街道地址是否有效.

我有这个/地址服务,例如我可以做一个POST /address/validation返回xml/json true或false的东西,但对我来说这似乎是非常不合适的.

另一种方法是做一个GET /address?street=xxx&nr=xxx&zipcode=xxx(和一些更多的参数)并返回200 OK,如果正确或404 Not not found,如果不正确,这可能更RESTful?

我开始做选项1)但是我想的越多,选项2)GET感觉更好......

想法?

rest

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

POST 数据不正确时的 HTTP 状态(使用不存在的资源 ID)

当我执行 POST 请求以创建新用户时返回正确 HTTP 状态是什么,但其参数之一不正确 - 我与用户数据一起包含的公司 ID 不存在于数据库中。

POST 数据:{用户名:'newuser',年龄:99,company_id:34 }

数据库中不存在 ID 为 34 的公司。

我在想这是否可能是:

  • 400,一种无效的数据,但它是有效但不存在的id
  • 404 - 但不清楚哪个资源不存在
  • 409,因为这是一种冲突,用户可以通过更改公司 ID 来解决这个问题
  • 422?
  • 或 500 - 因为这是一种数据库错误,而不允许存在不存在的 id

rest http-status-codes http-status-code-422

7
推荐指数
1
解决办法
5348
查看次数