标签: rest

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
查看次数

友谊系统的 RESTful URL 设计

我是公司的 API 开发人员。我们正在开发一个社交网络。我们正在使用友谊系统。我们正在使用面向API的系统。我将要编写的 API 将被我们正在开发的每个平台使用。

我通常有一个用户资源,并且使用友谊表来跟踪友谊:

+-----------+------------------+------+-----+---------------------+----------------+
| Field     | Type             | Null | Key | Default             | Extra          |
+-----------+------------------+------+-----+---------------------+----------------+
| id        | int(10) unsigned | NO   | PRI | NULL                | auto_increment |
| sourceId  | int(11)          | NO   | MUL | NULL                |                |
| targetId  | int(11)          | NO   |     | NULL                |                |
| status    | tinyint(1)       | NO   |     | 0                   |                |
| seen      | tinyint(1)       | NO   |     | 0                   |                | …
Run Code Online (Sandbox Code Playgroud)

rest social-networking restful-url social-network-friendship

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

在基于服务器的代理中使用 REST 服务

我们被要求构建一个基于 Domino 服务器的数据库,用于与远程非 Domino 服务器交换数据。可以使用 Web 服务连接到远程服务器。

使用 R8.5.3 在 Domino 中创建 RESTful 服务似乎很简单:Internet 上有一些关于 Domino 数据服务的非常有趣的文章。研究这一页肯定会帮助我建立连接的一端。

现在介绍代理中的消耗部分。我们之前做过一次,不久前,然后我们使用纯 HTTP URL 和一个简单的 GetDocumentByURL。它并不完美,但它有效。

但这是在 Domino 代理中使用 Web 服务的最佳方式吗?这是一个 Linux 环境,所以我不能使用 MS-objects 等。是否有一些我可以调用的标准库,最好是在 LotusScript 中?或者有没有办法在代理中使用某些 XPage 控件?

感谢您的建议!

rest lotus-domino

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

具有复合 ID 的 REST 资源的 URL

I\xe2\x80\x99m 创建一个 REST API,其中我的一些资源具有由两个独立部分组成的复合 ID。一个示例是给定纬度和经度的资源。

\n\n

我最初的想法是将 ID 的每个复合部分添加为路径的单独部分,如下所示:

\n\n
http://localhost/phone-details/Vodafone/07123000000 - Operator and number\n\nhttp://localhost/location-details/50/-2 - Lat and long\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是采取这种方法的最佳实践吗?也许应该使用查询字符串,以便每个复合 ID 部分都有一个清晰易懂的名称?或者,复合 ID 是否应该仅通过逗号分隔来传递?

\n

api rest url

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

使用 Jersey 和 JAX-RS 进行 POST 上传时换行符丢失

我正在使用 Jersey 和 JAX-RS 来实现 REST POST 端点。实际的 servletweb.xmlcom.sun.jersey.spi.spring.container.servlet.SpringServlet. 然后,我使用 JAX-RS 来注释我的端点:

  @POST
  @Path("foo")
  public Response foo(Reader input) throws IOException {
    BufferedReader lineReader = new BufferedReader(input);
    String line;
    while ((line = lineReader.readLine()) != null) {
      System.out.println(line);
    }

    return Response.ok("{}", MediaType.APPLICATION_JSON).build();
  }
Run Code Online (Sandbox Code Playgroud)

当我到达端点并提供一个文本文件时,换行符会丢失,并且会作为一行读入。例子:

line 1
line 2
line 3
Run Code Online (Sandbox Code Playgroud)

打印出:

line 1line 2line 3
Run Code Online (Sandbox Code Playgroud)

我尝试使用注释@Consumes("text/plain")并将请求标头设置为,Content-Type:text/plain但这没有帮助。为什么换行序列被删除?

java rest jax-rs jersey

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

使用 Java 和观察者模式使用 Jersey 的 RESTful Web 服务

我正在尝试为学校项目实现一个 n 层架构应用程序。客户端和服务器之间的通信是通过 RESTful Web 服务完成的。我使用Jersey在Java中实现这一点。我唯一的问题是,如何在服务器上注册客户端以接收更改通知(就像通常使用观察者模式或监听/发布模式所做的那样)。我是否还需要在客户端实现一个服务,然后注册服务器要调用的 URL,然后在发生更改时调用这些 URL?

感谢您的帮助!

java rest web-services jersey observer-pattern

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

如何公开方法或类似的替代方案

作为一个简单的例子,我有一个具有以下字段的学说实体

id
name
description
Run Code Online (Sandbox Code Playgroud)

我正在使用JMSSerializerBundle并且它在大多数情况下运行良好,但是如果我想让序列化数据(Json)包含未完全映射到我的实体的内容怎么办?

例如,如果我只想返回描述的前 50 个字符并且我想将其称为short_description.

我尝试使用排除策略来@Expose公开方法,但这不受支持。

我需要经常与许多不同的实体一起做这种事情,我想知道是否有人可以提出一个很好的干净的方法来解决这个问题。

我已经阅读了整个文档,JMSSerializerBundle并在互联网上寻找解决方案,我可以想出一些解决方案,但生成的代码看起来有点脏。

rest jms symfony jmsserializerbundle

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

涉及 HTTP 调用的 Node.js 性能优化

我有一个 Node.js 应用程序,它打开一个文件,扫描每一行,并为每一行进行涉及 Couchbase 的 REST 调用。一个文件的平均行数约为 12 至 1300 万行。目前,无需任何特殊设置,我的应用程序可以在大约 24 分钟内完全处理大约 100 万条记录。我浏览了很多问题、文章和 Node 文档,但找不到有关以下内容的任何信息:

  1. 节点可以同时打开 X 个 http 连接/套接字的设置在哪里?我可以改变它吗?
  2. 我必须规范文件处理,因为文件读取比 REST 调用快得多,所以一段时间后,打开的 REST 请求太多,它会阻塞系统并耗尽内存......所以现在我读取 1000 行等待让 REST 调用完成这些任务,然后恢复它(我正在使用流上的暂停和恢复方法来执行此操作)是否有更好的替代方案?
  3. 我可以执行什么所有可能的优化,以便它变得比这更快。我知道与 gc 相关的配置可以防止应用程序频繁停止。
  4. 是否推荐使用“集群”模块?它能无缝运行吗?

背景:我们有一个现有的 java 应用程序,它通过生成 100 个线程来执行完全相同的操作,并且它能够实现比当前节点对应物稍好的吞吐量。但我想尝试节点,因为有问题的两个操作(读取文件并为每一行进行 REST 调用)对于节点应用程序来说似乎是完美的情况,因为它们都可以在节点中异步,而 Java 应用程序会阻止对这些操作的调用。 ..

任何帮助将不胜感激...

rest performance multithreading node.js

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

如何获取 REST 消费者的 IP 地址

我会尝试用图表来解释

[REST SERVER] <--------> [JAVASCRIPT BASED WEBSITE]  <--------> [USER]
192.168.0.2              192.168.0.3                            192.168.0.123
Run Code Online (Sandbox Code Playgroud)

如何获取使用 REST 服务器的网站的 IP,而不是用户的 IP。

我尝试使用 $_SERVER['REMOTE_ADDR'] 和 $_SERVER['HTTP_REFERRER'] 但它们都返回用户的 IP。

在网络上可以吗?我的 REST 服务器使用 PHP。

php rest

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

发布原始字符串而不是表单数据?

你怎么做到这一点:

response = Net::HTTP.post_form(uri, {"q" => "My query", "per_page" => "50"})
Run Code Online (Sandbox Code Playgroud)

仅使用原始字符串而不是表单?就像是:

response = Net::HTTP.normal_post(uri, "My dog likes to walk in the forest")
Run Code Online (Sandbox Code Playgroud)

ruby rest http

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