1

我正在使用 NancyFX 来托管我们的网站 REST API。我们在数据库中有用户表,我想更新:

1) 完整用户更新 - 更新所有字段 2) 部分用户更新 - 仅更新单个字段

我们使用的是 Nancy 0.7 - 所以目前它没有 PATCH 支持 - 我只能使用 PUT

我已经定义了我的 API

PUT ["/user/{username}"] - for complete update using passed-in user object value
PUT ["/user/{username}/id/{newid}"] - for updating user id only

但是,当我调用第二个 API(仅更新 id)时——它永远不会被 Nancy 困住——并且 Nancy 总是调用该方法来完全更新用户,即 PUT ["/user/{username}"]

不管我声明 API 的顺序是什么,Nancy 总是只调用完整的用户更新端点。

需要帮助,以便我可以使用客户端应用程序中的 PUT 正确使用这两个 API。

4

2 回答 2

1

通常,对 URI 的任何动态数据组件进行 UrlEncode 是一个好主意。

所以,在你的情况下:

PUT - /user/xyz@yahoo.com/id/123

会成为

PUT - /user/xyz%40yahoo.com/id/123 

Nancy 将负责为您解码值,因此当您从parameters动态对象中提取它时,它将返回到xyz@yahoo.com

于 2012-09-26T08:18:04.177 回答
0

发现问题 - 它与用户名中的“@”字符有关 - 特殊字符。

如果用户名包含“@”字符,则 Nancy 永远不会匹配 PUT 的路由 - /user/xyz@yahoo.com/id/123 到 PUT ["/user/{username}/id/{newid}"]

它总是匹配 PUT 的路由 - /user/xyz@yahoo.com/id/123 到 PUT ["/user/{username}"]

于 2012-09-25T19:25:40.880 回答