2

我正在将数据从我的 Android 应用程序发送到编写为 asp.net web api 的 REST 服务。我已经成功发送了诸如

http://www.deanblakely.com/REST/api/products/3并处理 web.api 中的参数。

现在,在 Android 客户端中,我使用 GSON 将复杂对象转换为 json 字符串,字符串如下:

[{"TStamp":"Sep 25, 2012 5:04:46 PM","emailaddress":"webapi@restserver.com","altitude":0.0,"latitude":3.3743984E7,"longitude":-1.18107841 E8,"legnum":1}]

如何将此 json 字符串放入 url?例如我可以把它放在斜线之间吗?例如http://www.deanblakely.com/REST/api/objects/ {"TStamp":"Sep 25, 2012 5:04:46 PM","emailaddress":"webapi@restserver.com","altitude ":0.0,"纬度":3.3743984E7,"经度":-1.18107841E8,"legnum":1} ??

PS。我在 web.api 上的所有方法都是 Gets。我想保持这种方式,因为它更简单。如果您对此策略有疑问,请参阅:http ://forums.asp.net/t/1843826.aspx/1?Web+api+CRUD+Operations

谢谢,院长

4

1 回答 1

3

对于 RESTful Web api,get不应修改服务器上的状态或资源。

将参数放在查询字符串 URL 中通常是针对 REST 资源的 GET 请求完成的。

正如您的问题所见,通过 GET 完成所有操作并不简单。当您尝试通过更适合作为 GET 上的过滤器选项的查询字符串发布更复杂的对象和图形时,这并不典型并且会引入许多问题。

如果您将此类对象的 JSON 表示形式发送到服务器 Web api,则通常是在进行创建或更新。将其序列化为 JSON 并将其放入正文中会更容易。

如果您正在创建资源,请执行 POST 并将 JSON 对象放入请求的正文中。

如果您正在进行更新,(可能因为您有 /3),然后对 url 执行 POST、PUT 或 PATCH 请求,并将 json 对象放入正文中。PUT 意味着完全替换资源,而不是部分更新的 PATCH。

由于您使用的是 ASP.net web api,因此这里是使用 CRUD 操作的演练。通过 fiddler 运行:

http://www.asp.net/web-api/overview/creating-web-apis/creating-a-web-api-that-supports-crud-operations

于 2012-09-26T00:41:15.180 回答