标签: rest

RESTful"PUT"操作是否应该返回一些东西

我想知道人们对RESTful PUT操作的看法是什么,它在响应体中没有返回任何内容(null).

rest service resources put

403
推荐指数
5
解决办法
19万
查看次数

将整数数组传递给ASP.NET Web API?

我有一个ASP.NET Web API(版本4)REST服务,我需要传递一个整数数组.

这是我的行动方法:

public IEnumerable<Category> GetCategories(int[] categoryIds){
// code to retrieve categories from database
}
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的URL:

/Categories?categoryids=1,2,3,4
Run Code Online (Sandbox Code Playgroud)

c# arrays rest asp.net-web-api

397
推荐指数
12
解决办法
25万
查看次数

注销:GET或POST?

这个问题不是关于何时一般使用GET或POST; 它是关于处理Web应用程序注销的推荐方法.我已经在一般意义上找到了关于GET和POST之间差异的大量信息,但我没有找到这个特定场景的明确答案.

作为一个实用主义者,我倾向于使用GET,因为实现它比POST更简单; 只需删除一个简单的链接就可以了.这似乎是我能想到的绝大多数网站的情况,至少从头脑中可以看出来.甚至Stack Overflow也可以使用GET进行注销.

让我犹豫不决的是(尽管很老)一些论点,即一些网络加速器/代理通过访问和检索他们在页面中找到的每个链接来预先缓存页面,因此用户在点击它们时会得到更快的响应.我不确定这是否仍然适用,但如果是这种情况,那么从理论上讲,一旦有用这种加速器的用户在登录后就会被赶出应用程序,因为她的加速器会找到并检索注销链接,即使她从未点击过它.

到目前为止我所阅读的所有内容都建议POST应该用于"破坏性操作",而不改变应用程序内部状态的操作(如查询等)应该用GET处理.基于此,这里真正的问题是:

从应用程序注销被视为破坏性操作/是否会改变应用程序的内部状态?

architecture rest post get

393
推荐指数
6
解决办法
7万
查看次数

REST API最佳实践:如何接受参数值列表作为输入

我们正在推出一个新的REST API,我想要一些关于如何格式化输入参数的最佳实践的社区意见:

现在,我们的API非常以JSON为中心(仅返回JSON).关于我们是否想要/需要返回XML的争论是一个单独的问题.

由于我们的API输出是以JSON为中心的,我们一直在走一条路,我们的输入有点以JSON为中心,我一直在想这可能对某些人来说很方便,但总的来说很奇怪.

例如,要获得一些产品详细信息,我们可以立即提取多个产品:

http://our.api.com/Product?id=["101404","7267261"]
Run Code Online (Sandbox Code Playgroud)

我们应该简化为:

http://our.api.com/Product?id=101404,7267261
Run Code Online (Sandbox Code Playgroud)

或者有JSON输入方便吗?更多的痛苦?

我们可能希望接受这两种风格,但这种灵活性是否会导致更多的混乱和头痛(可维护性,文档等)?

更复杂的情况是我们想要提供更复杂的输入.例如,如果我们想在搜索上允许多个过滤器:

http://our.api.com/Search?term=pumas&filters={"productType":["Clothing","Bags"],"color":["Black","Red"]}
Run Code Online (Sandbox Code Playgroud)

我们不一定要将过滤器类型(例如productType和颜色)作为请求名称,如下所示:

http://our.api.com/Search?term=pumas&productType=["Clothing","Bags"]&color=["Black","Red"]
Run Code Online (Sandbox Code Playgroud)

因为我们想要将所有过滤器输入组合在一起.

最后,这真的很重要吗?可能有很多JSON实用程序,输入类型并不重要.

我知道我们的JavaScript客户端对API进行AJAX调用可能会欣赏JSON输入以使他们的生活更轻松.

api rest

385
推荐指数
5
解决办法
52万
查看次数

SOAP或REST for Web Services?

REST是一种更好的Web服务方法还是SOAP?或者它们是针对不同问题的不同工具?或者这是一个细致入微的问题 - 也就是说,在某些领域比另一个稍微好一点,等等?

赏金编辑:

现在,差不多三年后,我想再次提出这个问题 - 提供奖励以鼓励深入回答.我特别感谢有关这些概念及其与PHP-universe和现代高端Web应用程序的关系的信息.

xml rest soap web-services

381
推荐指数
21
解决办法
12万
查看次数

如何用curl做PUT请求?

如何使用curl测试RESTful PUT(或DELETE)方法?

rest curl http

381
推荐指数
5
解决办法
40万
查看次数

REST API服务为验证失败返回的适当HTTP状态代码是什么?

每当我在基于Django/Piston的REST API应用程序中遇到验证失败时,我目前正在返回401 Unauthorized .看过HTTP状态代码注册表后 我不相信这是验证失败的合适代码,你们都推荐什么?

  • 400错误请求
  • 401未经授权
  • 403禁止
  • 405方法不允许
  • 406不可接受
  • 412前提条件失败
  • 417期望失败
  • 422不可处理的实体
  • 424依赖失败

更新:上面的"验证失败"表示应用程序级别数据验证失败,即错误指定日期时间,虚假电子邮件地址等.

validation rest http-status-codes

373
推荐指数
5
解决办法
20万
查看次数

单独的REST JSON API服务器和客户端?

我即将从头开始创建一堆Web应用程序.(请参阅http://50pop.com/code获取概述.)我希望能够从许多不同的客户端访问它们:前端网站,智能手机应用程序,后端网络服务等.所以我真的想要一个每个JSON REST API.

此外,我更喜欢在后端工作,所以我梦想着我完全专注于API,并雇用其他人来制作前端用户界面,无论是网站,iPhone,Android还是其他应用.

请帮我决定采取哪种方法:

一起在铁路上

制作一个非常标准的Rails网络应用程序.在控制器中,执行respond_with开关,以提供JSON或HTML.然后JSON响应是我的API.

亲:很多先例.伟大的标准和许多以这种方式做事的例子.

Con:不一定要API与Web应用程序相同.不喜欢if/then respond_with切换方法.混合两个非常不同的东西(UI + API).

REST SERVER + JAVASCRIPT-HEAVY CLIENT

制作仅限JSON的REST API服务器.使用Backbone或Ember.js直接访问客户端JavaScript,在浏览器中显示模板.

亲:我喜欢API和客户端的分离.聪明的人说这是要走的路.理论上很棒.似乎前沿和令人兴奋.

骗局:没有多少先例.这方面的例子并不多.公共示例(twitter.com)感觉迟钝,甚至转向远离这种方法.

REST服务器+服务器端HTML客户端

制作仅限JSON的REST API服务器.创建一个基本的HTML网站客户端,仅访问REST API.减少客户端JavaScript.

亲:我喜欢API和客户端的分离.但是提供纯HTML5非常简单,而且不是客户密集型的.

骗局:没有多少先例.这方面的例子并不多.框架也不支持这一点.不知道如何处理它.

特别是从经验中寻求建议,而不仅仅是在理论上.

rest sinatra backbone.js ruby-on-rails-3 ember.js

371
推荐指数
8
解决办法
7万
查看次数

在ASP.NET Web API中返回错误的最佳实践

我对我们向客户返回错误的方式感到担忧.

当我们收到错误时,我们通过抛出HttpResponseException立即返回错误:

public void Post(Customer customer)
{
    if (string.IsNullOrEmpty(customer.Name))
    {
        throw new HttpResponseException("Customer Name cannot be empty", HttpStatusCode.BadRequest) 
    }
    if (customer.Accounts.Count == 0)
    {
         throw new HttpResponseException("Customer does not have any account", HttpStatusCode.BadRequest) 
    }
}
Run Code Online (Sandbox Code Playgroud)

或者我们累积所有错误然后发送回客户端:

public void Post(Customer customer)
{
    List<string> errors = new List<string>();
    if (string.IsNullOrEmpty(customer.Name))
    {
        errors.Add("Customer Name cannot be empty"); 
    }
    if (customer.Accounts.Count == 0)
    {
         errors.Add("Customer does not have any account"); 
    }
    var responseMessage = new HttpResponseMessage<List<string>>(errors, HttpStatusCode.BadRequest);
    throw new HttpResponseException(responseMessage);
}
Run Code Online (Sandbox Code Playgroud)

这只是一个示例代码,无论是验证错误还是服务器错误都无关紧要,我只想了解最佳实践,每种方法的优缺点.

c# rest asp.net-web-api

364
推荐指数
8
解决办法
46万
查看次数

REST API最佳实践:在何处放置参数?

REST API至少可以通过两种方式获取参数:

  1. 作为URL路径的一部分(即/api/resource/parametervalue )
  2. 作为查询参数(即/api/resource?parameter=value )

这里的最佳做法是什么?是否有任何一般指导原则何时使用1以及何时使用2?

真实世界的例子:Twitter使用查询参数来指定间隔.(http://api.twitter.com/1/statuses/home_timeline.json?since_id=12345&max_id=54321)

将这些参数放在URL路径中会被认为是更好的设计吗?

api rest url

348
推荐指数
7
解决办法
72万
查看次数