- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
很抱歉这个奇怪的标题。这是我的情况。
我有一个产品表,其中包含每个产品的名称和显示顺序。客户可以更改产品的显示顺序。该表是使用 jQuery.tmpl 生成的,并且使用 WCF 下的 GET 提取数据。从数据库中提取的产品是按 CategoryID 排列的。
当用户更改网格中产品的显示顺序时,需要使用 POST 更新产品。数据更新后,服务器需要发回更新后的 json 对象来更新表。
问题:如何针对这种情况构建我的 POST uri?这是我现在拥有的。
[OperationContract]
[WebInvoke(
Method = "POST",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "product/form/{categoryId}")]
[return: MessageParameter(Name = "products")]
List<Product> UpdateProduct(string categoryId);
我相信我更新资源的 uri 是正确的,因为我正在通过类别 ID 更新单个产品。但是,我想根据 POST 所做的更改返回一组新产品,而不必进行单独的 GET 调用。
不确定这是否“正确”。那些餐馆里的人让我害怕!
谢谢。
更新我开始更多地思考上面的代码,并意识到这里发生了更多事情。我的实际情况是,我正在尝试按 ProductID 更新特定产品,然后按 CategoryID 返回产品列表。本质上是一个 POST 和一个 GET。那么我的 URI 会是这样吗?
[WebInvoke(
Method = "POST",
UriTemplate = "product/form/{productId}/products/{categoryId}")]
[return: MessageParameter(Name = "products")]
List<Product> UpdateProduct(string productId, string categoryId);
用我这样的方法吗?
public static List<Product> UpdateProduct(string productId, string categoryId)
{
ProductManager.UpdateProduct(int.Parse(productId));
return ProductManager.GetProducts(int.Parse(categoryId));
}
更新2
此问题已得到解决 here丹尼尔提供的链接。尽管在一个 POST 调用中处理所有内容似乎很有意义,但我认为这不符合 REST 的精神以及使用 Uri 作为资源。使用 POST 然后使用 GET 调用似乎是答案。感谢丹尼尔。他的评论很好。
最佳答案
更新显示顺序的 POST
或 PUT
请求不应返回任何内容,指示请求状态的状态代码除外。您应该发出单独的 GET
请求来接收排名前 15/25/50 等产品的新列表:
If a new resource is created, the origin server MUST inform the user agent via the 201 (Created) response. If an existing resource is modified, either the 200 (OK) or 204 (No Content) response codes SHOULD be sent to indicate successful completion of the request. If the resource could not be created or modified with the Request-URI, an appropriate error response SHOULD be given that reflects the nature of the problem.
From: Section 9.6 of the HTTP 1.1 Specification
您可能还有兴趣查看HTTP Spec (第 9.5 和 9.6 节)以及以下 Stack Overflow 帖子:
<小时/>也就是说,我可以想到两种方法来更新产品的显示顺序:
发送特定product_id 的上移或下移请求。只要单击向上/向下按钮即可调用此请求。
发送整个类别的完整 order_rank 列表。
我相信后者更实用,但您可能想公开这两个操作。对于第一种方法,POST
动词似乎合适,但对于第二种方法,我会使用 PUT
。
对于第一种方法,我想象 URI 如下所示:
POST /products/{productId}/move-up
POST /products/{productId}/move-down
上面表明我们正在创建一个“上移”或“下移”命令。动词 POST
表示“创建”,名词(操作)是“上移”或“下移”命令,该命令作用于特定的 Product_id。
对于第二种方法,我会看到如下所示的 URI:
PUT /categories/{categoryId}/order-rank
我们可以向其传递带有 order_rank 编号的每个 Product_id 的 JSON/XML/etc 表示形式。动词 PUT
表示“更新”,名词是特定类别 ID 的“订单排名”。
关于asp.net - 用于 POST 和返回 (GET) 的 REST uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3884183/
使用 ruby 1.9.2-p290。我在尝试解析如下 URI 时遇到问题: require 'uri' my_uri = "http://www.anyserver.com/getdata?anyp
根据 http://tools.ietf.org/html/rfc3986和 http://en.wikipedia.org/wiki/Uniform_resource_identifier , UR
如何在文本 block 中发现 URI? 这个想法是将这样的文本运行变成链接。如果只考虑 http(s) 和 ftp(s) 方案,这很容易做到;但是,我猜测一般问题(考虑 tel、mailto 和其他
我的一些网址上有一些特殊字符。例如: http://blabla.com/title/?t=burası 当我从其他页面提供指向该页面的链接时,我使用: URI.encode(s) 产生这个链接: /
我在 Windows Mobile 上使用紧凑型框架/C#。 在我的应用程序中,我通过序列化对象并使用 HttpWebRequest/POST 请求向上发送信息来将数据上传到服务器。在服务器上,发布数
我正在做一个实验,我发现将 Canvas 转换为 blob,然后转换为数据 URI 会导致与直接从 Canvas 获取数据 URI 不同的 URI。打开时的内容在两个 URI 上几乎相同。 使用 bl
我正在尝试在 Rails 3 中实现 OAuth 提供程序。当我尝试授权客户端应用程序时,出现此错误。我正在使用 RESTful auth 插件和 pelles OAuth 插件。当我通过 Rails
我有一个编码的 UI 测试方法: public void MyTestMethod() { string baseUrl = "www.google.com"; GlobalVaria
我知道这是一个常见的错误,我正在使用一个已知的解决方案,但它仍然给我同样的错误: require 'open-uri' url = "http://website.com/dirs/filex[a]"
我正在尝试使用 .NET 中的 HttpClient 来使用 Web 服务,并且在我完成了 msdn 中提到的所有步骤之后 o 出现以下异常:提供了无效的请求 URI。请求 URI 必须是绝对 URI
我正在尝试检索文件的 URI。该文件存储在: /storage/emulated/0/AppName/FileName.png 如果我使用 Uri.fromFile(file),我得到的是 file:
我想知道 (SIP) URI 中的不同参数分隔符表示什么? 部分以;分隔,例如: . 其他用?隔开和 & ,例如: 最佳答案 SIP 分隔符规则来自RFC 2396 RFC 3986 已弃用.但是在
我想调用decodeUrl(...),我这样做是: import "dart:uri"; main() { decodeUrl("str"); } 但是现在有了最新的Dart-SDK,它会报告
在 URI 中,空格可以编码为 + .既然如此,那么在创建具有国际前缀的 tel URI 时是否应该对前导加号进行编码? 哪个更好?两者在实践中都有效吗? Call me Call me 最佳答案 不
我试图弄清楚电子邮件地址的格式是否可以说符合 URI 的定义,但到目前为止我还没有找到明确的确认。我希望有人可以在这里为我提供一些见解。预先感谢:) 最佳答案 是的,但带有“mailto:”前缀。 U
因此,我尝试将 ID 参数附加到 URI 的末尾,当用户单击我的列表中的项目时,用户将被发送到该 URI。我的代码如下: public void onItemClick(AdapterView par
这是 Converting file path to URI 的后续问题. 考虑: require 'uri' uri = URI.join('file:///', '/home/user/dir1/
我在 pl/sql 中创建了一个名为 tester 的包。但我收到以下消息。 绝对URI中的相对路径:java.net.URI.checkPath(URI.java:1823) --Package D
我在 gitlab 上有一个 git repo,使用私有(private) pod 和其他公共(public) pod,下面是我的 Podfile source 'git@gitlab.mycompa
我正在尝试将我的 Rails 应用程序推送到 heroku 上,我正在使用 heroku RedisToGo 附加组件我经历过这个tutorial并完成了那里提到的所有步骤。 但是在推送 heroku
我是一名优秀的程序员,十分优秀!