java - 在前后端分离的项目中,如何验证前端请求数据是否合法
问 题 最近在学习Vue,无意中爱上了前后端分离,但是有几个地方不知道怎么实现 用户登入,难道也是和以往一样给一个session还是有什么更好的解决方案 (如果api服务器和放前端页面的服务器不是同一台,而且域名也不一样,那该怎么办,有没有一个一劳永逸的方法) 比如用户已经登入了,但是用户自行修改post的数据,比如把10改成了100,那后端怎么判断这个数据是否被更改 望指导下,毕竟自学没人带 解决方案 如果后端是分布式的话(比如云服务器),建议使用 oauth2.0中的token验证方式,如果只是开发的话,可以用cookie。 oauth登录流程如下: 新建token表,字段 token,user_id,login_at,expire_at 用户使用账号密码登录 登录成功则在数据表token插入一条记录,并把该用户之前所有token删除或者设置为过期,并把token返回给前端 前端使用ajax的时候添加headerAutho
1350 2022-07-19
编程技术问答社区
jquery - Ajax请求Restful服务失败?
后台用json对象接收数据,使用jQuery默认$.ajax发送请求失败,发现媒体格式不支持: 然后,在$.ajax中添加contentType:"application/json",发现还是报错: 有什么办法?需要怎么做?
218 2022-07-19
编程技术问答社区
web - apidoc 到底该怎么用 ?需要用node.js 启动吗
问 题 最近看到这个 : apidoc 完全不知道怎么回事,安装了node.js 然后用npm跟着弄了 .没有任何头绪 ? 这个东西是不是还需要node.js来启动 ? 解决方案 依赖nodejs是肯定的。不过如果是全局安装的话,应该感觉不到这些依赖的。
270 2022-07-19
编程技术问答社区
python - django 编写接口的问题
问 题 最近做一个django的项目,和其他项目做对接,接口化。 有些事情不明, 1、用django,写url,views这种方式写接口,行吗。 2、django中有rest_framework 这种rest接口的形式,我粗略看了下,不太明白serializers这个什么作用 3、django原声写url,views的方式去写接口,和用rest_framework有什么区别。 为什么要用rest呢。 小白,sorry,望大神回答疑惑。 解决方案 用django,写url,views这种方式写接口,行吗。 行。因为所谓接口也是普通的URL。 django中有rest_framework 这种rest接口的形式,我粗略看了下,不太明白serializers这个什么作用 见官网的解释: Serializers allow complex data such as querysets and model instances
248 2022-07-19
编程技术问答社区
java - 有人能说明下什么是restful吗?
问 题 有人能说明下什么是restful吗?不用在说概念性的东西,结合场景说说为什么使用restful,有什么好处?举个通俗的例子,总之 让人可以很快的清楚,明白restful ps:依据楼下的回答又了解了一下,restful就是把操作的动作交给http的对应方法来识别,get:获取,post:创建,put:更新,delete:删除,这样同一个uri可能标识多个动作。在前台处理方面,其实form表单是只支持get,和post,如果需要支持put、delete等。各个支持rest的框架应该都有处理,比如spring MVC的HiddenHttpMethodFilter就是来解决这个的,也可以ajax处理。之于这样的好处,除了楼下说的,其他的可能要在实战中体会了 解决方案 这就是restful,好处就是规范uri,无状态 把这个换成 https://segmentfault.com/getQuestion.action?id=1010000005831178 你会发
262 2022-07-19
编程技术问答社区
http - PHP PUT方式传文件的话,如何获取文件内容呢 ?
问 题 最近因为在做前后端分离,后端PHP所有Api都使用RESTFul风格。 但是在使用PUT上传文件的时候,发现$_FILES没有文件信息(可能没有上传临时文件,待验证),使用POST是可以的,并且PUT从标准输入流获取过来的数据,读取出来是下面这种格式(上面我猜测没有上传临时文件,是因为看标准输入流里面存着文件信息),需要另外解析。 #获取到的输入流内容 ------WebKitFormBoundarybzEhWNCqbo9qKZBX Content-Disposition: form-data; name="upload"; filename="一些不错的职位.md" Content-Type: text/markdown xxxx xxxx xxxx ------WebKitFormBoundarybzEhWNCqbo9qKZBX-- 目前我的思路是两个: 如果上传临时文件(这个正在测试...): 如果上传了,可以读临时文件。 如果不上传临
190 2022-07-19
编程技术问答社区
api设计 - 关于 RESTful API 的设计的几点疑问?
问 题 不同端所需的 API 可能存在差异,移动端(android,ios),web 端需要的 API 应该分开放吗? API 的版本如何设计? 2.1 API 的版本号标志一般都放在哪里?(URI, 还是header里的某个字段?) 2.2 移动端发布新的小版本,例如fix一些bug,发布了v1.0.1,API 需要做什么样的调整(直接合并到http://a.com/api/v1 里吗)? 2.3 移动端发布新的大版本,例如v1 - v2,API 需要做什么样的调整(另起v2目录,原有的v1的api的请求全都失效吗)? API 的安全方面,服务端和客户端各需要做哪些事情? 针对移动端 API 来说,服务端需要指定响应的状态码吗?还是只要没有异常,通通返回 200(移动端貌似需要增加解析状态码的操作??)? 状态码放在json中还是以HTTP状态码形式返回? 可能有一些问题的答案是:这几种方案都行 解决方案 restful API 设计建
232 2022-07-19
编程技术问答社区
java - REST API命名问题请教
问 题 雇员类 public User{ int id;//key int code;//员工编号 唯一 String name; ... } api GET /employee/{id} 根据ID获取人员 GET /employee/{code} 如上:code也是唯一的,如果这么命名是会混淆,应该如何命名? 解决方案 /employee/code/{code}
152 2022-07-19
编程技术问答社区
javascript - Jsonp跨域访问不会传输数据 求教
本人前端小白一个,遇到了跨域访问的问题,特来求教.如下为postman自动生成的jquery脚本,在postman中可用,但是放到某个html中后,访问时,会出现跨域访问拒绝的问题,如下图1所示。 var form = new FormData(); form.append("data", "[{\"serviceUrl\" : \"/bank_auth\",\"apiKey\" : \"3FE8D08DB99D326D\",\"areacode\":\"000000\"} ]"); var settings = { "async": true, "crossDomain": true, "url": "http://xxx.xxx.com:58080/gateway-web-1.8.0/getTicket", "method": "POST", "headers": { "cache-control": "no-cache", "postma
210 2022-07-19
编程技术问答社区
php - Yii 2.0 Restful 接口 三种方式问题
问 题 公司做手机端,需要调用后台接口,主要原因是因为想安全一些,所以选择了Yii2.0,因为之前一直用的Qee框架,Yii不是特别熟悉,而且后来做Ionic,更加不熟悉框架。现在让我(小白),研究如何写一套Restful的接口。。 想问一下 HttpBasicAuth 是不是 简单的说 就是 登录之后 服务器返回一个access_token给手机端, 然后之后所有的url请求里 都在头部加入access-token 键值对是 Authorization:Basic xxxxx 这样的形式吗。 QueryParamAuth 是我唯一在postman里实现的,但是感觉比较简单,安全性一般 单纯就是在数据库里加入 access_token 字段 然后再请求url后面加上 access-token=xxx 这种形式的,然后我会得到整个数据库的内容,而不是单一的对应的某个用户的数据(也可能是我没做限制,不是很懂) HttpBearerAuth 不是很懂 感觉和HttpBa
200 2022-07-19
编程技术问答社区
如何通俗地解释RESTful?
问 题 如题,能否通俗解释一下,及其应用场景,优点,为何使用RESTful? 解决方案 题主所说的RESTFul,其中的REST实际上应该是ReST:Representational State Transfer的缩写,具体解释起来应该是: Representational的意思是表现形式 State Transfer的意思是状态转换 所以RESTful的含义是资源通过状态转换的一种表现形式。具体一点说,资源通过URL来定位,通过POST,GET,PUT,PATCH,DELETE等方法来操作,完成操作后通过HTTP的状态码2xx/4xx来完成状态的转换 先来说URL 其中资源指的就是URL。1楼答案表达的意思差不多,URL是用来定位资源的,但是1楼给出的方法也不是RESTful的方法。RESTful规范中的URL,通俗一点可以理解为与关系数据库中的表结构一一对应。也就是说URL中只包含名词+资源id,还是借用1楼的例子,如果老虎的id是10
202 2022-07-19
编程技术问答社区
python - Restful设计风格Token-based Authentication疑问请教
萌新这几天开始接触Python的Tornado框架,正常的后端渲染,用render,cookie验证状态通通都顺利,但想写restful api时在写auth时感觉无法下手。主要是token-based authentication问题。 我的总体思路是如此的: 1.参阅过许多的文章,但不甚明白,只知道无论token还是HTTP头部验证,都需要SSL传输。因为编码base64仅仅为了兼容性而非安全性。 2.现在已经基本实现了HTTP Auth的验证,但HTTP Auth只有关闭浏览器才会真正登出(这句话是否正确?)。另外我想实现token,但token的保存位置非常迷惑,另外restful下不能使用redirect等框架方法,应该如何跳转? 3.这里的登录,在HTTP Auth是”弹出框“要我输入账号密码,这与表单登录有何区别? 4.保存在cookie并不妥,虽然有文章指出即使保存在cookie它与cookie依然有着本质区别,但无法做到完全的statele
170 2022-07-19
编程技术问答社区
javascript - REST风格URL 不符合CURD的操作怎么起名?
问 题 目前互联网上充斥着大量的关于RESTful API(为方便,下文中“RESTful API ”简写为“API”)如何设计的文章,然而却没有一个”万能“的设计标准:如何鉴权?API 格式如何?当开始写一个app的时候,特别是后端模型部分已经写完的时候,不得不殚精竭虑的设计和实现自己app的public API部分。因为一旦发布,对外发布的API将会很难改变。 问题1: 发送邮件/mail/1/send 使用POST /mail/send 使用POST 该怎么样命名URL呢 问题2 获取某个特定用户列表 /getVipUser /user/vip /getUserList?type=vip 该怎么样命名URL呢 问题3 使用驼峰还是蛇形呢,很纠结,都用过,有人说随便,但是就是纠结。 解决方案 问题一: 换种思路。发送邮件能否把邮件当作一个资源,send操作相当于增加一个邮件。 mails 作为一个资源 POST /mails 新增一
266 2022-07-17
编程技术问答社区
restful - weex里的如何发送delete,put请求到后台
问 题 weex里的stream只能发送get,post请求。 发送delete,put等调用restful API的后台应该怎么办? 尝试用vue-resource,在Web下是没有问题的,android下验证失败,也许是姿势不对。 求正确姿势。。。。 解决方案 需要看一下原生代码的实现,看一下HttpAdapter默认是否支持,如果不支持,需要自己自定义HttpAdapter,然后设置成自己的Adapter就可以了。
252 2022-07-17
编程技术问答社区
java - 前后端分离中后端提供的RESTFUL接口如何进行权限控制?
问 题 今天遇到一个问题 我有一个系统,是基于角色的权限控制. 前端自然就是根据角色来控制应该显示的视图. 但是为了防止别人直接用httpclient访问,那么后台肯定也要对相应的权限进行控制. 进行交互时,我能知道的只有用户是谁 从而我可以知道的他的角色. 那么我想知道在代码层级的控制是怎么控制的. 如何控制某个角色只能访问一类url? 我的想法是 1.后台需要维护整个系统的url(即提供的接口) 2.维护系统所需要使用的视图(菜单,按钮等,因为接口的使用与视图基本绑定) 3.视图和角色绑定,用户和角色绑定 这样做就很麻烦 1.维护整个系统的url工作量超大 2.维护视图对应的接口URL工作量也超大 3.基于资源的RESTFUL接口有很多在url上的参数,正则会比较复杂,情况较多 后来,我看到了SHIRO中可以这样进行权限控制 在接口中,如springmvc接口 @RequireRoles("admin") @Req
938 2022-07-17
编程技术问答社区
java - 如何优雅实现restful接口的版本控制
问 题 网上看到目前rest api的版本控制主要有两种方式:1. url参数 2. 放入head中,那么对于这两种方式后端(spring框架)如何能优雅的实现? 难道就是每增一个版本就多写一个对应mapping的方法甚至controller,感觉这样代码会很冗余。 解决方案 twitter https://stream.twitter.com/1.1/statuses/sample.json google https://accounts.google.com/o/oauth2/v2/auth facebook https://graph.facebook.com/v2.8/oauth/access_token 在URL中添加版本参数,twitter/google/facebook...都是这样来做的。这不够优雅吗? 增加版本号就是为了接口能自然过度升级,这必然是需要冗余历史版本的代码。不过做法也有很多种。如果你是在一个应用中实现多版本的支持
138 2022-07-17
编程技术问答社区
php - Restful api实际应用
问 题 RESTful api在实际应用中都有完全依据规范设计吗 例如 get /ticket/1 post /ticket put /ticket/1 patch /ticket/1 delete /ticket/1 另外还有状态码的使用 200,201,202等等 在实际应用中都是怎么做的呢 解决方案 关于RESTful规范 既然使用了RESTful那么尽量去 “接近” 他的规范吧,这个在团队协作做,会有一种“约定大于配置”的高效沟通效果 一旦定义了实体资源,比如文章posts,那么很多接口地址其实都一目了然了,如果再配合一份团队所有成员都可以看的数据库模型设计,或数据库文档,那基础的接口文档直接可以不需要了 关于状态码 状态码就遵循HTTP Status Code规范就好了,在响应头里带回来,然后如果出错了,单独响应一个错误的error信息,详细描述错误内容
286 2022-07-17
编程技术问答社区
java - 设置restful接口处理分页时,是否应该返回总页数
问 题 如题,设置Restful的接口,要处理分页。是否应该返回总页数,或条目总数呢? 现在基于两点思考暂时认为是不需要的: 有条目总数返回暴露数据库中的实际数据大小,对于互联网公司而言,自己的数据量不希望轻易让别人知道。 多了一个字段,每次都要判断是否是最后一页,进而在遇到最后一页时继续下滑时不再加载网络,表面上看减少了最后一次多余的请求网络(如果没有条目总数字段,已经是最后一页了客户端并不知道,需要额外访问一次网络没数据了才知道),但是做互联网项目尝尝数据量是足够大的,例如微博,今日头条等等, 几乎可以永远往下面刷不会遇到最后一页,所以不但没有起到减少一次多余请求的效果,反而因为每次多了一个字段,增加了每次请求的内容长度。 以上是我个人的观点, 是否有同学能从其他的一些角度来分析这个事情呢 解决方案 应该是有需求决定的。 我现在的设计是将两个接口分开提供,需要获取总页数的,就单独获取总页数(比如:后台系统,大部分的分页都需要总页数),不需要的就只获
166 2022-07-17
编程技术问答社区
javascript - token身份校验的设计方式
问 题 我的一个思路: 用户登录的时候,输入username/password,post到后端 后端正常流程登录验证,验证成功,生成token和expire_time并存储到数据库,并返回信息告诉前端登录成功 前端收到登录成功的信息后,将后端返回的用户信息存储起来,并按照后端生成token的规则,自己生成一个token信息并保存本地 当前端再次请求后端数据的时候,在header里面带上token 后端每次收到前端请求的时候验证该token是否存在,并验证token的有效期 疑点一:该思路是否需要改进? 疑点二:前端生成的token发送服务器的时候,是否会被劫持?有什么方案可解决? 疑点三:使用php如何优雅的获取header里面的token? 解决方案 有两点觉得好像不对 1.后端并不需要存储token和expire_time到数据库!因为需要权限的操作,前端都会传递token过来,只需验证是否有效,并解析就可以得到用户相关信息; 2
212 2022-07-17
编程技术问答社区