我是Django REST框架的初学者,需要你的build议。 我正在开发一个Web服务。 该服务必须提供REST接口到其他服务。 REST接口,我需要实现,不直接与我的模型(我的意思是得到,放,发布,删除操作)。 相反,它提供了一些计算结果的其他服务。 在请求我的服务进行一些计算,只是返回结果(不会将结果存储在自己的数据库中)。 以下是我对如何实现REST接口的理解。 纠正我,如果我错了。 创build进行计算的类。 将其命名为“CalcClass”。 CalcClass在其工作中使用模型。 计算所需的parameter passing给构造函数。 执行计算操作。 它将结果作为“ResultClass”返回。 创buildResultClass。 从对象派生。 它只是具有包含计算结果的属性。 计算结果的一部分被表示为元组的元组。 据我所知,进一步的序列化将更好地为这些结果实现一个单独的类,并将这些对象的列表添加到ResultClass。 为ResultClass创build序列化程序。 从serializers.Serializer派生。 计算结果是只读的,因此主要使用Field类的字段,而不是专门的类,如IntegerField。 我不应该在ResultClass和Serializer上impl save()方法,因为我不打算存储结果(我只是想根据请求返回它们)。 用于嵌套结果的Impl序列化器(记得上面提到的元组的元组)。 创build视图来返回计算结果。 从APIView派生。 只需要得到()。 在get()中创buildCalcClass,并从请求中获取参数,调用它的calc(),得到ResultClass,创buildSerializer并将ResultClass传递给它,返回Response(serializer.data)。 url 在我的情况下没有api根。 我应该只有url来获得各种计算结果(与差异参数计算)。 添加调用format_suffix_patterns为api浏览。 我错过了什么? 这个方法一般是正确的吗?
我正在构build一个REST API,但是我遇到了一个问题。 看来在devise一个REST API中被接受的做法是,如果请求的资源不存在,则返回一个404。 但是,对我来说,这增加了不必要的含糊之处。 传统上,HTTP 404与一个错误的URI相关联。 所以实际上我们是这样说的: “要么你到了正确的地方,而是那个特定的logging不存在, 或者互联网上没有这样的位置!我真的不确定哪一个……” 考虑以下的URI: http://mywebsite/api/user/13 如果我得到404回来,是因为用户13不存在? 或者是因为我的url应该是: http://mywebsite/restapi/user/13 在过去,如果logging不存在,我刚刚返回了带有HTTP 200 OK响应代码的NULL结果。 这很简单,在我看来很干净,即使它不一定被接受的做法。 但有没有更好的方法来做到这一点?
在Node.js中 ,除了使用subprocess进行CURL调用之外,是否有一种方法可以对远程服务器REST API进行CURL调用并获取返回数据? 我还需要设置远程REST调用的请求头,以及GET(或POST)中的查询string。 我find了这个: http : //blog.nodejitsu.com/jsdom-jquery-in-5-lines-on-nodejs 但是它不会以任何方式显示POST查询string。
例如,您为users/9运行GET请求,但没有用户ID为9。 哪个是最好的响应码? 200好 202接受 204无内容 400错误的请求 404没有find
正如大家可能已经注意到的那样,在野外有很多假的/基本的REST-API(它实现了一个HTTP-API并称之为REST,而没有遵循超文本作为引擎的应用程序状态要求,着名的罗伊·T·菲尔丁(Roy T. Fielding )的咆哮,他是第一个指定REST范式的人)。 我一直无法find任何真正的超文本驱动的REST实现的实例,以及与状态转换相关的特定于应用程序的媒体types定义。 有这样的实现的公共可访问的例子吗?
我正在创build一个REST api,密切关注apigeebuild议,使用名词而不是动词,api版本被烘焙到url中,每个集合有两个apipath,GET POST PUT DELETE用法等等。 我正在login系统上工作,但不确定正确的RESTlogin用户的方式。 在这一点上,我不是在安全工作,只是login模式或stream量。 (稍后我们将添加2步oAuth,HMAC等) 可能的选项 POST类似https://api…com/v1/login.json PUT的东西像https://api…com/v1/users.json 我没有经过的东西… 什么是login用户的适当的REST风格?
为什么你会使用另一个,为您的Django应用程序公开一个API? http://pypi.python.org/pypi/djangorestframework/ http://pypi.python.org/pypi/django-tastypie
据我所知,每个人的资源应该只有一条规范的path。 所以在下面的例子中,好的URL模式是什么? 以一个公司的rest表示为例。 在这个假设的例子中,每个公司拥有 0个或更多的部门,每个部门拥有 0个或更多的员工。 没有关联公司就不能生存。 没有相关部门的员工不能存在 。 现在我会发现资源模式的自然表示。 /companies 一系列公司 – 接受投入新公司。 获取整个集合。 /companies/{companyId}个别公司。 接受GET,PUT和DELETE /companies/{companyId}/departments接受POST的新项目。 (在公司内部创build一个部门) /companies/{companyId}/departments/{departmentId}/ /companies/{companyId}/departments/{departmentId}/employees /companies/{companyId}/departments/{departmentId}/employees/{empId} 鉴于每个部分的限制,我觉得这是有道理的,如果有点深层嵌套。 但是,如果我想列出( GET )所有公司的所有员工,我的困难就来了。 资源模式最贴近/employees (所有员工的集合) 这是否意味着我应该拥有/employees/{empId}也是因为如果有,那么有两个URI来获得相同的资源? 或者,也许整个模式应该是扁平的,但这意味着员工是一个嵌套的顶级对象。 在基本级别/employees/?company={companyId}&department={deptId}返回与嵌套最深的模式完全相同的员工视图。 URL资源被其他资源拥有 ,但应该单独查询的最佳做法是什么? 看到我下面的答案,看看我已经做了什么。
我已经实现了两个REST服务:Twitter和Netflix。 这两次,我努力寻找决定将这些服务公开为REST而不是SOAP的决定所涉及的用途和逻辑。 我希望有人能够告诉我我缺less的东西,并解释为什么REST被用作这些服务的服务实现。 1)实现REST服务比实现SOAP服务花费的时间要长得多。 所有现代语言/框架/平台的工具都可以在WSDL中读取并输出代理类和客户端。 实现一个REST服务是通过手工完成的,通过阅读文档来获得这个服务。 此外,在实施这两项服务的同时,您还必须“猜测”什么会回来,因为没有真正的模式或参考文件。 2)为什么编写一个返回XML的REST服务呢? 唯一的区别是,使用REST你不知道每个元素/属性代表的types – 你自己来实现它,并希望有一天一个string不会出现在你认为总是一个整数的字段中。 SOAP使用WSDL定义了数据结构,所以这是一个简单的事情。 3)我听说过使用SOAP的投诉,您有SOAP Envelope的“开销”。 在这个时代,我们真的需要担心less数几个字节吗? 4)我听说过REST,你可以将URLpopup到浏览器中查看数据。 当然,如果你的REST服务使用简单的或者没有authentication。 例如,Netflix服务使用OAuth,在您提交请求之前,您需要对事物进行签名和编码。 5)为什么我们需要每个资源的“可读”URL? 如果我们使用一个工具来实现这个服务,我们真的关心实际的URL吗?
我有一个旧的Web应用程序,我必须支持(我没有写)。 当我填写表格并提交,然后检查Chrome中的“networking”选项卡时,我会看到“请求有效内容”,我通常会看到“表单数据”。 两者之间有什么区别,什么时候发送而不是另一个呢? 谷歌search这个,但没有真正find任何信息解释(只是人们试图让JavaScript应用程序发送“表格数据”,而不是“请求有效载荷”。