Questions tagged «rest»

REST(表示状态传输)是一种用于分布式超媒体系统(例如,万维网)的软件体系结构。相对于RPC体系结构(例如SOAP),由于客户端与服务器之间的固有解耦(由于异构系统之间具有统一的接口),它的流行度有所提高。

5
REST HATEOAS(成熟度级别3)多么有用/重要?
我正在参与一个项目,其中一些高级团队成员认为REST API必须符合HATEOAS并实现所有Richardson的成熟度级别(http://martinfowler.com/articles/richardsonMaturityModel.html)! AFAIK大多数REST实施都不符合HATEOAS,因此应该有一个充分的理由说明为什么更多的人不这样做。我可以想到诸如增加复杂性,缺乏框架(服务器和客户端),性能问题以及...等原因。 你怎么看?您在现实项目中对HATEOAS有任何经验吗?
110 rest  hateoas 

7
对于一般的不成功请求(不是错误),适当的HTTP状态代码响应是什么?
我正在创建一个RESTful API,它将处理许多用户交互,包括使用存储的信用卡下订单。 如果订单成功,我将返回200 OK,如果订单请求格式错误或无效,我将返回400 Bad Request。但是,如果订单的实际处理过程中出现问题,我应该退货吗? 客户端向服务器发送POSTS命令以获取用户资源。如果用户不存在,则返回404 Not Found。 订单格式和信息已验证。如果无效,则返回400 Bad Request。 订单已处理。如果订单成功,则为订单返回201 Created。如果遇到意外错误,则返回500服务器错误。 最后一步是问题-如果由于其他原因导致订单未完成,我该怎么办?可能的情况包括: 产品售罄 达到用户最大订单数限制 信用卡交易失败(资金不足等) 这似乎不适合400或500。如果没有更好的代码,如果我能将其视为400,则根据业务规则,该请求无效。它似乎并不准确。 编辑:还发现了同一主题的现有讨论。那里的所有答案似乎都指向针对这种类型的违规使用状态码,并在使用400、409或422扩展名之间进行了一些讨论。

5
如何使用curl将JSON发布到PHP
我可能还差得远,但是我整个下午一直在尝试在这个嵌入式PHP框架教程中运行curl post命令。我不明白的是PHP应该如何解释我的POST,它总是作为一个空数组出现。 curl -i -X POST -d '{"screencast":{"subject":"tools"}}' \ http://localhost:3570/index.php/trainingServer/screencast.json (其中的斜线只是让我看起来不像个白痴,而是我使用PHP 5.2在Windows上执行此操作,也曾在Linux服务器(与Linux curl相同版本)上尝试过) 我必须缺少一些东西,因为它看起来很简单,帖子解释得不好,如果可以的话,一切都会很好。 这就是我得到的: HTTP / 1.1 409冲突 日期:2009年5月1日,星期五,格林尼治标准时间 服务器:Apache / 2.2.8(Win32)PHP / 5.2.6 X-Powered-By:PHP / 5.2.6 传输编码:分块 内容类型:text / html; 字符集= iso-8859-1 {“ screencast”:{“ id”:null,“ subject”:null,“ body”:null, “ dataUrl”:null,“ dataMedium”:null,“ createdOn”:null,“ author”:null}}
108 php  rest  post 

13
WSDL vs REST的优缺点
有关: 为什么要使用REST而不是Web服务? 在决定是否使用SOAP或REST(我指的是RESTful方式的HTTP / XML)实现Web服务时,我应该注意什么,应该考虑什么?我认为这不是一个万能的东西,所以我该如何选择使用哪种呢?
108 web-services  rest  wsdl 


9
RESTful密码重置
构建用于重置密码的RESTful资源的正确方法是什么? 此资源用于丢失或忘记密码的人的密码重置器。它会使他们的旧密码无效,并通过电子邮件向他们发送密码。 我有两个选择: POST /reset_password/{user_name} 要么... POST /reset_password -Username passed through request body 我很确定请求应该是POST。我不太自信选择了合适的名字。而且我不确定user_name是否应该通过URL或请求正文传递。

5
使用邮递员通过原始json发送POST数据
我有Postman(在Chrome中无法打开的邮递员),并且我正在尝试使用原始json发出POST请求。 在“正文”选项卡中,我选择了“原始”,并使用该正文“ JSON(application / json)”: { "foo": "bar" } 对于标题,我有1 Content-Type: application/json 在PHP方面,我现在正在做print_r($_POST);,并且得到一个空数组。 如果我使用jQuery并执行以下操作: $.ajax({ "type": "POST", "url": "/rest/index.php", "data": { "foo": "bar" } }).done(function (d) { console.log(d); }); 我得到预期的结果: Array ( [foo] => bar ) 那为什么不与Postman合作呢? 邮递员截图: 和标题:
107 php  json  rest  postman 

4
RESTful服务中的非CRUD操作
将非CRUD操作添加到RESTful服务的“ RESTful”方式是什么?假设我有一项服务,允许CRUD访问以下记录: GET /api/car/123 <- Returns information for the Car object with ID 123 POST /api/car <- Creates a new car (with properties in the request) PUT /api/car/123 <- Updates car 123 (with properties in the request) DELETE /api/car/123 <- Deletes car 123 POST /api/car/123/wheel/ <- Creates a wheel and …
106 web-services  rest 

5
正确的REST响应是否有空表?
比方说,你想通过调用来获得用户的列表GET来api/users,但目前该表已被截断,所以没有用户。什么是这种情况下适当的反应:404或204?
106 api  http  rest 

5
REST GET API的建议日期格式
像这样的REST GET API推荐的时间戳格式是什么: http://api.example.com/start_date/{timestamp} 我认为实际的日期格式应为ISO 8601格式,例如YYYY-MM-DDThh:mm:ssZUTC时间。 我们是否应该使用没有连字符和冒号的ISO 8601版本,例如: http://api.example.com/start_date/YYYYMMDDThhmmssZ 还是应该使用例如base64编码对ISO 8601格式进行编码?
105 http  url  rest  date  get 

7
用于Rest API服务器的Scala框架?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 4年前关闭。 改善这个问题 我们正在考虑将Rest API服务器(在Symfony PHP上的Web服务中)移动到Scala的原因有以下几种:速度,无开销,较少的CPU,较少的代码,可伸缩性等。几天前,但我一直很享受这些天从Scala书籍以及所有博客文章和问题中学到的东西(这并不难看!) 我有以下选择: 从头开始构建Rest API服务器 使用像Scalatra这样的小型Scala Web框架 使用升降机 我将不得不使用的一些东西:HTTP请求,JSON输出,MySQL(数据),OAuth,Memcache(缓存),日志,文件上传,统计信息(也许是Redis)。 你会推荐什么?
105 api  rest  scala  lift 

17
Spring Boot:无法访问localhost上的REST Controller(404)
我正在尝试在Spring Boot网站上改编REST Controller示例。不幸的是,当我尝试访问localhost:8080/itemURL 时遇到以下错误。 { "timestamp": 1436442596410, "status": 404, "error": "Not Found", "message": "No message available", "path": "/item" } POM: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>SpringBootTest</groupId> <artifactId>SpringBootTest</artifactId> <version>0.0.1-SNAPSHOT</version> <properties> <javaVersion>1.8</javaVersion> <mainClassPackage>com.nice.application</mainClassPackage> <mainClass>${mainClassPackage}.InventoryApp</mainClass> </properties> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.3</version> <configuration> <source>${javaVersion}</source> <target>${javaVersion}</target> </configuration> </plugin> <!-- Makes the Spring Boot app …
104 java  rest  spring-boot 

4
如何管理版本化API的基础代码库?
我一直在阅读有关ReST API的版本控制策略,其中似乎没有一个要解决的问题是如何管理基础代码库。 假设我们正在对API进行一系列重大更改-例如,更改我们的Customer资源,以使其返回单独的forename和surname字段,而不是单个name字段。(对于此示例,我将使用URL版本控制解决方案,因为它很容易理解所涉及的概念,但是该问题同样适用于内容协商或自定义HTTP标头) 现在http://api.mycompany.com/v1/customers/{id},我们在拥有一个端点,在拥有另一个不兼容的端点http://api.mycompany.com/v2/customers/{id}。我们仍在向v1 API发布错误修正和安全更新,但是新功能开发现在都集中在v2上。我们如何编写,测试和部署更改到我们的API服务器?我可以看到至少两个解决方案: 对v1代码库使用源代码控制分支/标记。v1和v2是独立开发和部署的,同时有必要使用修订控制合并来将相同的错误修正应用于两个版本-类似于在开发主要的新版本时仍支持先前版本时如何管理本机应用程序的代码库。 使代码库本身了解API版本,因此最终得到一个包含v1客户表示形式和v2客户表示形式的代码库。将版本控制视为解决方案体系结构的一部分,而不是部署问题-可能使用名称空间和路由的某种组合来确保请求由正确的版本处理。 分支模型的明显优势是删除旧的API版本很简单-只是停止部署适当的分支/标签-但是如果您运行的是多个版本,则最终可能会遇到复杂的分支结构和部署管道。“统一代码库”模型避免了此问题,但是(我认为吗?)将使得在不再需要不再使用的资源和端点时,很难从代码库中删除它们。我知道这可能是主观的,因为不可能有一个简单的正确答案,但我很好奇要了解维护多个版本的复杂API的组织如何解决此问题。

5
如何构建采用ID数组作为资源的REST API
我正在为我的项目构建REST API。获取给定用户的INFO的API是: api.com/users/[USER-ID] 我还希望允许客户端传递用户ID列表。如何构造API,使其具有RESTful并接受用户ID列表?
103 api  rest 

3
RESTful登录失败:返回401或自定义响应
这是一个概念性的问题。 我有一个客户端(移动)应用程序,需要支持针对RESTful Web服务的登录操作。因为Web服务是RESTful的,所以这意味着客户端接受了用户的用户名/密码,并通过该服务验证了该用户名/密码,然后只是记得随所有后续请求一起发送该用户名/密码。 此Web服务中的所有其他响应均以JSON格式提供。 问题是,当我查询Web服务只是为了确定给定的用户名/密码是否有效时,Web服务是否应始终以JSON数据响应以告知其成功或不成功,还是应返回具有良好凭据和HTTP的HTTP 200 401错误的凭据。 我问的原因是,即使您只是在询问凭证是否有效,其他一些RESTful服务也使用401来提供不良凭证。但是,据我对401响应的理解,它们代表一种资源,如果没有有效的凭据,您不应访问这些资源。但是任何人都应该可以访问登录资源,因为登录资源的全部目的是告诉您您的凭据是否有效。 换句话说,在我看来,这样的请求: myservice.com/this/is/a/user/action 如果提供了错误的凭据,则应返回401。但是这样的请求: myservice.com/are/these/credentials/valid 永远不要返回401,因为该特定的URL(请求)是使用有效凭据或不使用有效凭据进行授权的。 我想听一听,对此有一些合理的看法。处理此问题的标准方法是什么?逻辑上适当的处理方法是什么?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.