标签: restful-architecture

REST API设计-提取余额操作

目前正在设计一个 REST API,并且不确定如何最好地处理提款操作,出于发布忽略安全性的目的,因为这已经得到处理。

当前用户资源有一个平衡连接,

GET https://api.example.com/user/1/balance

{"balance":10}
Run Code Online (Sandbox Code Playgroud)

将返还用户余额

我可以想到两种方式从该余额中提取,要么在余额连接上删除,要么通过新连接提取,然后将金额发布到该连接。

DELETE实施 - 撤回 5 分

DELETE https://api.example.com/user/1/balance?amount=5

{"balance":5}
Run Code Online (Sandbox Code Playgroud)

POST实施 - 提现 5 分

POST https://api.example.com/user/1/withdraw
HTTP BODY: amount=5

{"balance":5}
Run Code Online (Sandbox Code Playgroud)

建议?

就我个人而言,我会在提款连接上使用POST,因为这将操作与数据分开,然后可以使用GET获取提款交易并使用DELETE取消。

更新

另一种方法可能是在余额对象上创建交易连接,然后对其进行POST 。

POST https://api.example.com/user/1/balance/transactions
HTTP BODY: amount=-5

{"balance":5}
Run Code Online (Sandbox Code Playgroud)

这是一个更好的方法吗?然后,这将在余额资源上创建事务资源。

rest http restful-architecture

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

用oauth2休息

我正在使用这个库和我的codeigniter休息服务.基本上,我有一个REST_controller,它是继承的,并使用该库检查有效的令牌.

我想要的只是提供一个API来保护一些API方法.现在,我忘了阅读oauth2的大部分规范和关于该库的教程.

任何人都可以帮助我,证明我可以实现的良好教程,示例和解释,一个简单的登录系统,然后,调用用户身份验证的方法.

提前致谢

rest restful-authentication oauth-2.0 restful-architecture

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

通过REST捕获审计跟踪信息

我正在努力想出通过REST服务捕获审计信息的"正确"方法.假设我有一个Employee资源的内部REST API.我想在添加/修改/删除Employee时捕获事物,例如执行更改的用户,用户使用的应用程序,完成时间(假设这可能是异步的,因此用户的操作可能发生在与REST调用不同的时间)等.此外,发起更改的用户可能不是进行REST调用的经过身份验证的用户.

我的想法是这些属性不属于请求的主体 - 这意味着它们不是Employee对象的属性.它们不是可以在GET上检索和返回的东西,因此它们不应该在POST/PUT中.它们也不属于参数,因为参数应该用于指定有关Employees的其他内容或者对Employees的GET请求的搜索/过滤器Critiera.

我目前的想法是让客户端在HTTP标头中指定此信息.这使得Employee资源的URL参数和正文保持纯净.这是合适的标题使用吗?还有其他我没看到的选择吗?

rest audit audit-trail http-headers restful-architecture

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

YII2 Restfull奇怪的行为

尝试使用 Yii2 Advanced 模板创建 API 应用程序(基于 RESTFull 服务)。为此创建了子域 api.domain.com。

目录结构如下所示:

在此处输入图片说明

问题是,当我尝试发送 GET 请求以api.domain.com/users获得以下响应时:

{
  "name": "Not Found",
  "message": "Page not found.",
  "code": 0,
  "status": 404,
  "type": "yii\web\NotFoundHttpException",
  "previous": {
    "name": "Invalid Route",
    "message": "Unable to resolve the request \"user/index\".",
    "code": 0,
    "type": "yii\base\InvalidRouteException"
  }
}
Run Code Online (Sandbox Code Playgroud)

这是配置文件:

https://gist.github.com/d1930b6bf20e3d50fe63

这是控制器(位于 Controllers 文件夹中):

https://gist.github.com/anonymous/180a7e791e879570e0f4

问题是...

我究竟做错了什么?

php rest get restful-architecture yii2

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

RESTful api 设计:通过嵌套函数处理异常(python、flask)

我想提高我的编码风格的一个更强大的把握tryexceptraise在设计API,以及更简洁的代码。

我有嵌套函数,当一个函数捕获到一个 execption 时,我将异常传递给另一个函数,依此类推。

但是像这样,我可以传播对同一错误的多次检查。我指的是:[在python中使用try vs if 来考虑尝试操作的成本。

您将如何在嵌套函数中仅处理一次错误?

例如

  • 我有一个功能f(key)对键进行一些操作;结果传递给其他函数g()h()
  • 如果结果符合预期的数据结构, g() .. h() 将操作并返回更新的结果
  • 装饰器将返回最终结果或返回遇到的 第一个错误,即指出它是在哪个方法中引发的(f(),g()h())。

我正在做这样的事情:

def f(key):
   try:
     #do something
     return {'data' : 'data_structure'}
   except:
     return {'error': 'there is an error'}

@application.route('/')
def api_f(key):
    data = f(k)
    try:
       # do something on data
       return jsonify(data)
    except:
       return jsonify({'error':'error in key'})
Run Code Online (Sandbox Code Playgroud)

python api try-catch restful-architecture

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

为每个数据库表创建一个RESTful资源是一个好习惯吗?

将RESTful资源映射到数据库表的最佳方法是什么?在定义RESTful API的体系结构时,哪个条件决定要拥有哪些资源以及每个资源包含哪些资源?是否应将每个数据库表映射到单独的资源,或者这不是最佳实践?

api database-design relational-database restful-architecture django-rest-framework

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

使用 HATEOAS 对耦合 RESTful API 进行版本控制

我们可以ProductsAPI浏览我们网站上可用的产品,这些产品由我们的移动应用程序(Android 和 iOS)使用。以下是基本设计:

URL: /api/products/
Response:
[
    {
        "id" : 123,
        "name" : "abc",
        "detailsUrl" : "/api/products/123"
    },
    {
        "id" : 124,
        "name" : "xyz",
        "detailsUrl" : "/api/products/124"
    }
]
Run Code Online (Sandbox Code Playgroud)

此处detailsUrl包含ProductDetails页面的 API URL 。

现在,我们需要ProductDetails在新版本的应用程序中对API的响应进行一些更改,并且需要对其进行版本控制。URL 将更改为 - /api/v2/products/{id}(我们通过 URL 使用 API 版本控制)。

由于我们不想要以前版本的应用程序中的新响应,我们需要创建一个新版本的ProductsAPI也将发送新的ProductDetailsAPIurl 作为响应。

API 以这种方式耦合。如果我们更改任何子 API 的版本,则父 API 版本也需要更改。处理此问题的推荐方法是什么?我们是否应该改变我们的 API 版本控制方式(使用标头或其他东西)?

api rest hateoas restful-architecture api-versioning

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

REST API,何时使用@PathParam,@ QueryParam,@ RequestBody和/或@RequestHeader

如果在何时/何时不使用上述将信息传递给REST调用的方法,我一直试图找到答案.

我一直在寻找各地,但每个帖子只讨论两种列出的方法之间的差异,或3,而不是所有4.

java rest spring restful-architecture spring-boot

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

RestTemplate:返回实体列表

有一个RestFull方法,它返回Menu对象的List

public ResponseEntity<List<Menu>> getMenus() {
..
}
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何从RestTemplate获取它们,如何从ResponseEntity>获取类

ResponseEntity<List<Menu>> response = restTemplate
                  .exchange("http://127.0.0.1:8080/elcor/api/users/1/menus", HttpMethod.GET, entity,  ResponseEntity<List<Menu>>.getClass());
Run Code Online (Sandbox Code Playgroud)

rest spring-mvc resttemplate restful-architecture spring-boot

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

忘记密码流程的 RESTFul API 设计建议

我正在为忘记密码流设计 Restful API。在 Web 应用程序中使用的流程如下:

1) User enters user id
2) Application validates user id and sends verification token to user's email address
3) User will be asked for validation code and new password
4) User will enter validation code and new password
5) Application validates token and updates password.
Run Code Online (Sandbox Code Playgroud)

我很感激您就如何将此流程转换为 Restful API 的建议。

谢谢你,
拉杰

rest restful-url restful-architecture

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