Questions tagged «rest»

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


4
如何使用Spring Boot和Spring Security保护REST API?
我知道保护REST API是一个被广泛评论的话题,但是我无法创建一个符合我的标准的小型原型(并且我需要确认这些标准是现实的)。如何保护资源以及如何使用Spring安全性有很多选择,我需要弄清楚我的需求是否现实。 我的要求 基于令牌的身份验证器-用户将提供其凭据,并获得唯一且受时间限制的访问令牌。我想在自己的实现中管理令牌的创建,检查有效性和到期时间。 某些REST资源将是公开的-完全不需要身份验证, 某些资源仅对具有管理员权限的用户可用, 授权所有用户后,即可访问其他资源。 我不想使用基本身份验证 Java代码配置(非XML) 当前状态 我的REST API运作良好,但现在我需要保护它。当我寻找解决方案时,我创建了一个javax.servlet.Filter过滤器: @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; String accessToken = request.getHeader(AUTHORIZATION_TOKEN); Account account = accountDao.find(accessToken); if (account == null) { throw new UnauthorizedException(); } chain.doFilter(req, res); } …

6
RESTful API运行时可发现性/ HATEOAS客户端设计
对于我参与的SaaS初创公司,我正在使用RESTful Web API和在使用它的不同平台上构建了几个客户端应用程序。我想我已经弄清楚了API,但是现在我转向客户。当我阅读有关REST的文章时,我发现REST的关键部分是发现,但是关于发现真正含义的两种不同解释之间似乎存在很多争论: 开发人员发现:开发人员将大量API详细信息硬编码到客户端,例如资源URI,查询参数,受支持的HTTP方法以及他们通过浏览文档并试验API响应而发现的其他详细信息。恕我直言,这种类型的发现需要很酷的链接和API版本控制问题,并导致客户端代码与API的硬耦合。似乎没有比使用有据可查的RPC收藏更好的了。 运行时发现-客户端应用程序本身能够以很少或没有带外信息(大概只有API所处理的媒体类型的知识)来找出所需的一切。链接可能很热。但是,要使API非常高效,似乎需要对查询参数进行大量链接模板处理,从而使带外信息重新出现。自从我还没有想到过,我可能还没有想到其他困难。在开发中达到了这一点。但是我确实喜欢松散耦合的想法。 运行时发现似乎是REST的圣杯,但是我很少看到有关如何实现这种客户端的宝贵讨论。我发现的几乎所有REST资源似乎都假定开发人员发现了。有人知道一些运行时发现资源吗?最佳做法?带有真实代码的示例或库?我正在使用PHP(Zend Framework)的一个客户端。另一个是Objective-C(iOS)。 考虑到开发人员社区中现有的工具和知识,运行时发现是否是一个现实的目标?我可以编写客户端以不透明的方式处理所有URI,但是如何最有效地执行此操作是一个问题,尤其是在低带宽连接上。无论如何,URI只是方程式的一部分。在运行时上下文中链接模板怎么样?除了发出大量OPTIONS请求外,如何交流支持哪些方法?
79 api  rest  discovery  hateoas 

5
如何在Android上使用WCF服务
我正在.NET中创建服务器,并为Android创建客户端应用程序。我想实现一种身份验证方法,该方法将用户名和密码发送到服务器,然后服务器发送回会话字符串。 我对WCF不熟悉,因此非常感谢您的帮助。 在Java中,我编写了以下方法: private void Login() { HttpClient httpClient = new DefaultHttpClient(); try { String url = "http://192.168.1.5:8000/Login?username=test&password=test"; HttpGet method = new HttpGet( new URI(url) ); HttpResponse response = httpClient.execute(method); if ( response != null ) { Log.i( "login", "received " + getResponse(response.getEntity()) ); } else { Log.i( "login", "got …
79 .net  android  wcf  rest 

6
如何在RESTful Web服务中实现登录?
我正在构建带有服务层的Web应用程序。服务层将使用RESTful设计构建。这种想法是,将来我们可能会构建使用与Web应用程序相同的服务层的其他应用程序(iPhone,Android等)。我的问题是-如何实现登录?我认为我无法从较传统的基于动词的设计过渡到基于资源的设计。如果我是用SOAP构建的,则可能会有一个称为Login的方法。在REST中,我应该有一个资源。我很难理解如何为登录构建URI。应该是这样的: http:// myservice / {用户名}?p = {密码} 编辑:前端Web应用程序使用传统的ASP.NET框架进行身份验证。但是,在身份验证过程中的某个时刻,我需要验证提供的凭据。在传统的Web应用程序中,我将进行数据库查找。但是在这种情况下,我将调用服务而不是进行数据库查找。因此,我在服务中需要一些可以验证提供的凭据的东西。而且,除了验证提供的凭据外,在用户成功通过身份验证后,我可能还需要有关用户的某种信息-例如其全名,其ID等。我希望这可以使问题更清楚。 还是我没有考虑正确的方法?我觉得我很难正确地描述我的问题。 科里

13
错误415不支持的媒体类型:如果为JSON,则POST无法到达REST,但如果为XML,则为POST
我实际上是REST WS的新手,但实际上我不明白这一点415 Unsupported Media Type。 我正在Firefox上用Poster测试我的REST,GET对我来说也很好,也可以POST(当它是时application/xml),但是当我尝试application/json它完全无法到达WS时,服务器会拒绝它。 这是我的网址:http:// localhost:8081 / RestDemo / services / customers / add 这是JSON我发送的:{"name": "test1", "address" :"test2"} 这是XML我发送的: <customer> <name>test1</name> <address>test2</address> </customer> 这是我的Resource类: @Produces("application/xml") @Path("customers") @Singleton @XmlRootElement(name = "customers") public class CustomerResource { private TreeMap<Integer, Customer> customerMap = new TreeMap<Integer, Customer>(); public CustomerResource() { // hardcode a …
78 java  json  web-services  rest  post 

2
如何向烧瓶添加后台线程?
我正在忙着编写一个小型游戏服务器来试用Flask。游戏通过REST向用户展示API。用户执行操作和查询数据很容易,但是我想在app.run()循环之外为“游戏世界”提供服务,以更新游戏实体等。鉴于Flask的实现如此简洁,我想看看是否有烧瓶的方法可以做到这一点。
78 python  rest  flask 

6
如何在RESTful应用程序中防止CSRF?
通常使用以下方法之一来防止跨站请求伪造(CSRF): 检查引荐来源-RESTful但不可靠 将令牌插入表单并将令牌存储在服务器会话中-并非真正的RESTful 神秘的一次URI-出于与令牌相同的原因而不是RESTful 手动发送此请求的密码(不是HTTP身份验证使用的缓存密码)-RESTful但不方便 我的想法是使用用户机密,一个隐秘但静态的表单ID和JavaScript来生成令牌。 <form method="POST" action="/someresource" id="7099879082361234103"> <input type="hidden" name="token" value="generateToken(...)"> ... </form> GET /usersecret/john_doe 由JavaScript从已验证的用户获取。 回应:OK 89070135420357234586534346这个秘密从概念上讲是静态的,但是每天/每小时都可以更改……以提高安全性。这是唯一的机密内容。 使用JavaScript读取神秘的(但对所有用户而言都是静态的!)表单ID,并与用户密码一起处理: generateToken(7099879082361234103, 89070135420357234586534346) 将表单以及生成的令牌发送到服务器。 由于服务器知道用户密码和表单ID,因此可以与客户端在发送并比较两个结果之前运行相同的generateToken函数。仅当两个值相等时,该操作才被授权。 尽管事实上如果没有JavaScript也无法使用,这种方法有什么问题吗? 附录: 无状态CSRF保护

7
从Spring Boot Rest服务下载文件
我正在尝试从Spring Boot Rest服务下载文件。 @RequestMapping(path="/downloadFile",method=RequestMethod.GET) @Consumes(MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<InputStreamReader> downloadDocument( String acquistionId, String fileType, Integer expressVfId) throws IOException { File file2Upload = new File("C:\\Users\\admin\\Desktop\\bkp\\1.rtf"); HttpHeaders headers = new HttpHeaders(); headers.add("Cache-Control", "no-cache, no-store, must-revalidate"); headers.add("Pragma", "no-cache"); headers.add("Expires", "0"); InputStreamReader i = new InputStreamReader(new FileInputStream(file2Upload)); System.out.println("The length of the file is : "+file2Upload.length()); return …
78 java  spring  rest 

11
Asp.Net WebApi2启用CORS无法与AspNet.WebApi.Cors 5.2.3一起使用
我试图按照http://enable-cors.org/server_aspnet.html 上的步骤操作,以使我的RESTful API(使用ASP.NET WebAPI2实现)可以处理跨源请求(启用CORS)。除非我修改web.config,否则它将无法正常工作。 我安装了WebApi Cors依赖项: install-package Microsoft.AspNet.WebApi.Cors -ProjectName MyProject.Web.Api 然后在我App_Start的班级中WebApiConfig,如下所示: public static class WebApiConfig { public static void Register(HttpConfiguration config) { var corsAttr = new EnableCorsAttribute("*", "*", "*"); config.EnableCors(corsAttr); var constraintsResolver = new DefaultInlineConstraintResolver(); constraintsResolver.ConstraintMap.Add("apiVersionConstraint", typeof(ApiVersionConstraint)); config.MapHttpAttributeRoutes(constraintsResolver); config.Services.Replace(typeof(IHttpControllerSelector), new NamespaceHttpControllerSelector(config)); //config.EnableSystemDiagnosticsTracing(); config.Services.Replace(typeof(ITraceWriter), new SimpleTraceWriter(WebContainerManager.Get<ILogManager>())); config.Services.Add(typeof(IExceptionLogger), new SimpleExceptionLogger(WebContainerManager.Get<ILogManager>())); config.Services.Replace(typeof(IExceptionHandler), new …

7
Groovy内置的REST / HTTP客户端?
我听说Groovy具有内置的REST / HTTP客户端。我唯一可以找到的库是HttpBuilder,这是吗? 基本上,我正在寻找一种从Groovy代码内部执行HTTP GET的方法,而不必导入任何库(如果可能的话)。但是由于该模块似乎不是核心Groovy的一部分,所以我不确定此处是否具有正确的库。


2
了解Backbone.js REST调用
我正在尝试了解Backbone.js同步方法,并且正在浏览http://backbonejs.org/#Sync上的文档 它说 The default sync handler maps CRUD to REST like so: create → POST /collection read → GET /collection[/id] update → PUT /collection/id delete → DELETE /collection/id 现在,由于我一直从事前端开发并且是Backbone的新手,所以我发现上面的内容很难理解...我从未使用过REST或任何其他服务器端协议... 您能用简单的术语解释一下吗(例如当我们使用Backbone.sync时REST的映射方式)任何非常简单的示例都将非常有用...

7
如何建立RESTful API?
问题是这样的:我有一个在PHP服务器上运行的Web应用程序。我想为此构建一个REST API。 我进行了一些研究,发现REST api使用带有身份验证密钥(不一定)的某些URI的HTTP方法(GET,POST ...),并且信息以HTTP响应的形式返回,信息为XML或JSON。 (我宁愿使用JSON)。 我的问题是: 作为应用程序的开发人员,我如何构建这些URI?我需要在该URI上编写PHP代码吗? 如何构建JSON对象以作为响应返回?
77 php  api  rest  authentication 

26
web-api POST正文对象始终为null
我仍在学习Web API,因此,如果我的问题听起来很愚蠢,请原谅我。 我在我的StudentController: public HttpResponseMessage PostStudent([FromBody]Models.Student student) { if (DBManager.createStudent(student) != null) return Request.CreateResponse(HttpStatusCode.Created, student); else return Request.CreateResponse(HttpStatusCode.BadRequest, student); } 为了测试它是否有效,我使用Google Chrome的扩展程序“ Postman”来构造HTTP POST请求以对其进行测试。 这是我的原始POST请求: POST /api/Student HTTP/1.1 Host: localhost:1118 Content-Type: application/json Cache-Control: no-cache {"student": [{"name":"John Doe", "age":18, "country":"United States of America"}]} student应该是一个对象,但是当我调试应用程序时,API会接收到该student对象,但内容始终是null。

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.