Tag: rest

自顶向下的Web服务和自下而上的Web服务有什么区别?

在Java中,自顶向下的Web服务和自底向上的Web服务有什么区别? 另外,SOAP和REST-ful Web服务有什么区别?

HATEOAS:简洁的描述

我试图得到对HATEOAS的清晰和简明的理解,而我绝不是一个专家WRT REST(我想我明白了,这要感谢http://tomayko.com/writings/rest-to-my-妻子 ) 任何人都可以build议一个同样令人生气的博客/文章WRT HATEOAS?

为什么在使用Google地图API时不能获得“相同来源策略”警告?

我正在JavaScript页面中进行REST风格的Web服务调用,并得到以下警告: “这个页面正在访问不受其控制的信息,这会带来安全风险,你想继续吗?” 现在我已经读到了这一点,并意识到跨域,相同的来源政策 。 但是,当我使用Google的Maps API等其他API时,我不会收到这样的警告。 显然,域名与我的本地域名不一样。 有什么不同? 我最初的猜测是,当我的REST消费使用XMLHttpRequest时,Google使用<script>标签“导​​入”页面。 如果是这样的话,这两种方法有什么区别,值得警惕,另一方面呢?

如何在基于Spring的强types语言中正确地使用PATCH – example

据我所知: PUT – 用其整个表示更新对象(replace) 修补程序 – 仅使用给定字段更新对象(更新) 我正在使用Spring来实现一个非常简单的HTTP服务器。 当用户想要更新他的数据时,他需要为某个端点(比如: api/user )创build一个HTTP PATCH 。 他的请求体通过@RequestBody映射到DTO,如下所示: class PatchUserRequest { @Email @Length(min = 5, max = 50) var email: String? = null @Length(max = 100) var name: String? = null … } 然后我使用这个类的一个对象来更新(修补)用户对象: fun patchWithRequest(userRequest: PatchUserRequest) { if (!userRequest.email.isNullOrEmpty()) { email = userRequest.email!! } if (!userRequest.name.isNullOrEmpty()) { name […]

在不违反RESTful原则的情况下对Angular进行身份validation和授权的最佳实践?

长时间的粉丝,第一次的海报:) 我已经阅读了很多关于使用REST和Angular进行身份validation和授权的线程,但是我仍然不觉得我有一个很好的解决scheme来实现我所希望的。 对于一些背景,我打算在AngularJS中构build一个我想要支持的应用程序: 有限的访客 一旦通过身份validation,即可对基于angular色的应用程 通过API进行身份validation 所有对REST API的调用都需要通过SSL进行。 我希望在不破坏RESTful原则的情况下构build应用程序,即不会将会话状态保存在服务器上。 当然,无论在服务器端如何进行客户端的授权,都必须加强。 由于我们需要传递每个请求的整个状态,我知道我需要传递某种令牌,以便接收REST请求的后端服务器既可以对呼叫进行身份validation,也可以对其进行授权。 这就是说,我的主要问题是身份validation – 这里最好的做法是什么? 似乎有很多不同的方法讨论,这里只是我发现的几个: http://broadcast.oreilly.com/2009/12/principles-for-standardized-rest-authentication.html http://frederiknakstad.com/2013/01/21/authentication-in-single-page-applications-with-angular-js/ http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html 有一个类似的问题( AngularJS最佳实践应用程序authentication ),但除非我误解了答案,这似乎意味着应该使用服务器会话,这是违反RESTful原则。 我对Amazon AWS和George Reese的文章主要关注的是,似乎认为消费者是一个程序,而不是最终用户。 一个共享的秘密可以提前发给程序员,然后他们可以用它来编码调用。 这不是这种情况 – 我需要代表用户从应用程序调用REST API。 这种方法是否足够? 假设我有一个会话资源: POST / api /会话 为用户创build一个新的会话 要创build会话,您需要发布一个包含“用户名”和“密码”的JSON对象。 { "email" : "austen@example.com", "password" : "password" } curl示例 curl -v -X POST –data '{"username":"austen@example.com","password":"password"}' "https://app.example.com/api/session" –header "Content-Type:application/json" […]

会话pipe理:如何为REST服务生成身份validation令牌? (新泽西州)

我正试图在我的REST服务中实现会话pipe理。 在冲浪的时候我开始了解这些指南: 不使用服务器端会话 – 它违反了RESTful原则。 使用HTTP基本身份validation – 现在不可能,因为我被要求不使用SSL / TLS(基本身份validation无疑是必需的)。 使用Http摘要 – 我听说这增加了networkingstream量。 这听起来成本很高,特别是当我的客户端是移动设备时。 使用cookies – 我被告知不应该依靠cookie来保护我的重要资源,他们很容易被欺骗。 另外,我通过cookies了解了跨站点脚本攻击。 我留下了一个生成身份validation令牌的选项,用户每次都必须发送 – 我承认这不是“完全”RESTful。 现在我需要知道,我应该如何生成这些在业务级别足够安全的唯一身份validation令牌? 泽西岛有一些图书馆吗? 我应该去OAuth ..我刚刚读了一些关于他们,在我的情况是否有用? 请记住,我的目标客户端是移动设备 – 他们是否可以访问OAuth服务?

RESTfuldevise:何时使用子资源?

在devise资源层次时,应该何时使用子资源? 我曾经相信,当一个资源不可能没有另一个时,它应该被表示为它的子资源。 我最近碰到这个反例: 员工在所有公司中都是唯一可识别的。 员工的访问控制和生命周期取决于公司。 我将其build模为: /companies/{companyName}/employee/{employeeId} 请注意,我不需要查找公司来find员工,那么我该怎么办? 如果我这样做,我付出代价来查找我不需要的信息。 如果我没有,这个URL错误地返回HTTP 200: /companies/{nonExistingName}/employee/{existingId} 我应该如何表示一个资源属于另一个资源的事实? 我应该如何expression这样一个事实:一个资源如果没有另一个资源就不能被识别 ? 子资源意味着什么关系,而不是意味着build模?

同步适配器没有帐户

我需要从我的应用程序通过云端获取一些数据。 我在RESTful android应用程序上观看了Google IOvideo@ http://www.youtube.com/watch?v=xHXn3Kg2IQE&t=43m58s它build议在最终幻灯片中使用SyncAdapter与Android系统进行集成。 后来我了解到,必须使用一个帐户来实现SyncAdapter。 我的应用程序不使用帐户。 用户无需注册即可自由下载数据。 我还可以使用SyncAdapter吗? 有没有我可以使用的股票虚拟账户? 编辑:我有我的应用程序的内容提供商,所以这不是一个问题 编辑2:我刚刚在设置 – >帐户和同步下查看天气和股票应用程序。 您可以看到它们允许同步,但没有删除帐户button。 另一方面,谷歌,Facebook和Skype应用程序允许同步PLUS他们有一个删除帐户button。 这意味着天气和股票不使用帐户,而Google,Facebook和Skype。 我发现的教程@ http://ericmiles.wordpress.com/2010/09/22/connecting-the-dots-with-android-syncadapter/和@ http://www.c99.org/2010/01/23 /写-Android-sync-provider-part-1 /说一个必须有一个帐户使用同步适配器。 :S?

Spring Boot Rest Controller如何返回不同的HTTP状态码?

我为一个简单的REST API使用Spring Boot,并希望在出现问题时返回正确的HTTP状态码。 @RequestMapping(value="/rawdata/", method = RequestMethod.PUT) @ResponseBody @ResponseStatus( HttpStatus.OK ) public RestModel create(@RequestBody String data) { // code ommitted.. // how do i return a correct status code if something fails? } 作为Spring和Spring Boot的新手,基本的问题是,当某些事情是好的或者失败的时候,我如何返回不同的状态代码?

推荐的REST GET API的date格式

REST GET API的推荐时间戳格式是什么? http://api.example.com/start_date/{timestamp} 我认为实际的date格式应该是ISO 8601格式,例如UTC时间的YYYY-MM-DDThh:mm:ssZ 。 我们是否应该使用不带连字符和冒号的ISO 8601版本,例如: http://api.example.com/start_date/YYYYMMDDThhmmssZ 还是应该使用base64编码来编码ISO 8601格式?