REST Web 服务,仅用于数据库访问?

标签 rest post get service

我一直在阅读有关 REST Web 服务的内容,并且希望实现自己的 REST 服务。

我在互联网上看到的所有示例都与数据库访问有关。但我想要实现的目标与访问数据库无关。

我想创建一个 REST 服务,允许将大字符串和各种其他参数传递到资源中,并返回 xml 结果集。不会在数据库中创建或更新任何内容,也不会从数据库中检索任何内容。它将数据传递给复杂的处理过程,然后返回结果。

我的问题在于我使用什么动词?

我觉得我应该使用 GET 动词来与最佳实践保持一致,但查询有时可能非常大,并且将其传递到查询字符串上是实际的。

这让我只剩下 POST 了。这似乎符合我想要实现的目标,但我认为它再次脱离了 REST 最佳实践!

REST 只能在想要与数据库交互时使用吗?

我应该放弃使用 Rest 的想法并创建 SOAP 服务吗?

更新我的 REST 服务是分析文章并返回给定文章的关键字报告。鉴于此,资源就是“关键字”,对此进行 POST 将返回完整的报告。我当时正在考虑关键字/推荐的第二个 uri,对此的 POST 将返回已提交文章的一些推荐的关键短语。这符合 REST 吗?

最佳答案

REST 不需要数据库,如果事实上 REST 与数据库无关的话。

您描述的场景正是 POST 的目的。引自最新修订的HTTP specs :

The POST method is used to request that the origin server accept the representation enclosed in the request as data to be processed by the target resource.resource.

你可以这样做:

POST /ArticleProcessor
Content-Type: text/plain

发送您的文章文本,回复可能是:

Status: 200 OK
Content-Type:application/xhtml

<html>
<title>Results of keyword processing</title>
<body>
<a rel="FullReport" href="/reports/2343434/full">Full Report</a>
<a rel="TopKeywords" href="/reports/2343434/top">Top Keywords</a>
</body>
</html>

关于REST Web 服务,仅用于数据库访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4068416/

相关文章:

javascript - 如何通过 Cypress 对下面的正文请求进行断言。谢谢

json - Perl CGI 在帖子中使用 JSON 传递变量

post - GET 和 POST 加密有什么区别?

java - 使用 Java 解析 Json 响应

python - 谷歌云 Composer 获取 Airflow webserver_id

ios - 如何在iOS中获取Linkedin访问 token 来调用API?

php - 使用php将表单更新错误发布到mysql

javascript - 我在解析 JSON 时遇到问题,有人知道为什么吗? (提供更多背景)

javascript - Cypress : How can we write GET request in with bearer token in cypress?

scala - 从 Spark 调用休息服务