- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在设计一个 REST API,在整个 API 中,当我们尝试访问的对象/资源不存在时,我们使用了 HTTP Not found/404。
Ex: http://host/someobject/1
但目前的情况略有不同。我有使用查询参数搜索数据的 URI。
Ex: http://host/someObject/find?param1=param1value¶m2=param2value
查询参数是可选的,但至少必须提供一个条件才能成功请求。假设 URI 存在但目前不存在数据,当搜索结果为空时,我当前返回空列表。
任何人都可以阐明这种情况吗?我应该返回状态代码为 200 的空数组还是其他内容?
最佳答案
TL;DR - 返回与 N 结果相同的内容,使用 N = 0。
http://host/someObject/find?param1=param1value¶m2=param2value
请记住,从 REST/HTTP 的角度来看,上面的 URI 不是查询;它是信息资源的标识符。标识符的一部分(由 RFC-3986 命名为查询)只是“非分层数据”。
您的实现解析 URI,并将它找到的标记用作查询的输入这一事实是一个实现细节,并且通过统一接口(interface)故意对客户端隐藏。 (例如,考虑客户端 GET 请求通过客户端和服务器之间的缓存的情况;缓存可能使用 URI 作为键值存储中的查找,并且——找到那里的表示——将发送结果返回给客户端而不将请求转发给服务器)。
理想情况下,您的资源及其表示将是稳定的,即使您的实现可能不稳定。
The query parameters are optional but at least one criteria must be provided for successful request. I am currently returning empty list when search result is empty assuming the URI exists but data not present at the moment.
完美。
I assume the comment of you says my implementation is fine ?
是的。
Also i found some of the persons saying verb shouldn't be there and representation should be objects/?param=value or Objects?param=value.
快速概览
REST 不关心你对资源标识符使用什么拼写网络也不是——就网络的其他部分而言,您的 URI 是不透明的。客户端代码不应该解释标识符,或者以任何方式依赖它们的解释。唯一应该关心的是源服务器(它需要将标识符路由到适当的实现)。
您引用的“规则”类似于推荐变量名称最佳实践的编码风格指南。该规则的动机是基于 REST 和网络;不是通过规范,而是通过更深层次的想法……菲尔丁的definition of resources :
The key abstraction of information in REST is a resource. Any information that can be named can be a resource: a document or image, a temporal service (e.g. "today's weather in Los Angeles"), a collection of other resources, a non-virtual object (e.g. a person), and so on. In other words, any concept that might be the target of an author's hypertext reference must fit within the definition of a resource.
REST components perform actions on a resource by using a representation to capture the current or intended state of that resource and transferring that representation between components.
由此可见,任何返回表示的资源都必须是具有状态的事物。因此,命名准则鼓励将资源标识为名词而不是动词的拼写。
“为我找到满足这些约束的对象”是您的 URI 所说的,但这与资源的概念不一致。准则鼓励您转而思考“获取满足以下约束的对象集合的当前状态”,然后选择与此资源一致的标识符。
I am pretty confused when I read these different blogs with different opinions
大多数程序员通过学习一些东西就可以了,然后通过询问附近的人来学习其余的东西。这意味着人们拥有的许多实用“知识”都来自口头传统;每次有新人讲述时,故事都会发生变化,并且会与其他事物混淆。
在 REST 的情况下,扭曲达到了这样一种程度,即了解原始故事的人开始寻找一个新名称来使用,只是为了能够重新引入原始想法。
关于REST API - 当搜索条件 (queryParams) 没有产生任何结果时返回什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41397435/
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
在编码时,我问了自己这个问题: 这样更快吗: if(false) return true; else return false; 比这个? if(false) return true; return
如何在逻辑条件下进行“返回”? 在这样的情况下这会很有用 checkConfig() || return false; var iNeedThis=doSomething() || return fa
这是我的正则表达式 demo 如问题所述: 如果第一个数字是 1 则返回 1 但如果是 145 则返回 145 但如果是 133 则返回 133 样本数据a: K'8134567 K'81345678
在代码高尔夫问答部分查看谜题和答案时,我遇到了 this solution返回 1 的最长和最晦涩的方法 引用答案, int foo(void) { return! 0; } int bar(
我想在下面返回 JSON。 { "name": "jackie" } postman 给我错误。说明 Unexpected 'n' 这里是 Spring Boot 的新手。 1日龄。有没有正确的方法来
只要“is”返回 True,“==”不应该返回 True 吗? In [101]: np.NAN is np.nan is np.NaN Out[101]: True In [102]: np.NAN
我需要获取所有在 6 号或 7 号房间或根本不在任何房间的学生的详细信息。如果他们在其他房间,简单地说,我不希望有那个记录。 我的架构是: students(roll_no, name,class,.
我有一个表单,我将它发送到 php 以通过 ajax 插入到 mysql 数据库中。一切顺利,php 返回 "true" 值,但在 ajax 中它显示 false 消息。 在这里你可以查看php代码:
我在 Kotlin 中遇到了一个非常奇怪的无法解释的值比较问题,以下代码打印 假 data class Foo ( val a: Byte ) fun main() { val NUM
请注意,这并非特定于 Protractor。问题在于 Angular 2 的内置 Testability service Protractor 碰巧使用。 Protractor 调用 Testabil
在调试窗口中,以下表达式均返回 1。 Application.WorksheetFunction.CountA(Cells(4 + (i - 1) * rows_per_record, 28) & "
我在本地使用 jsonplaceholder ( http://jsonplaceholder.typicode.com/)。我正在通过 extjs rest 代理测试我的 GET 和 POST 调用
这是 Postman 为成功调用我的页面而提供的(修改后的)代码段。 var client = new RestClient("http://sub.example.com/wp-json/wp/v2
这个问题在这里已经有了答案: What to do with mysqli problems? Errors like mysqli_fetch_array(): Argument #1 must
我想我对 C 命令行参数有点生疏。我查看了我的一些旧代码,但无论这个版本是什么,都会出现段错误。 运行方式是 ./foo -n num(其中 num 是用户在命令行中输入的数字) 但不知何故它不起作用
我已经编写了一个类来处理命名管道连接,如果我创建了一个实例,关闭它,然后尝试创建另一个实例,调用 CreateFile() 返回 INVALID_HANDLE_VALUE,并且 GetLastErro
即使 is_writable() 返回 true,我也无法写入文件。当然,该文件存在并且显然是可读的。这是代码: $file = "data"; echo file_get_contents($fil
下面代码中的变量 $response 为 NULL,尽管它应该是 SOAP 请求的值。 (潮汐列表)。当我调用 $client->__getLastResponse() 时,我从 SOAP 服务获得了
我一直在网上的不同论坛上搜索答案,但似乎没有与我的情况相符的... 我正在使用 Windows 7,VS2010。 我有一个使用定时器来调用任务栏刷新功能的应用程序。在该任务栏函数中包含对 LoadI
我是一名优秀的程序员,十分优秀!