response

mvc api 拦劫处理返回值

杀马特。学长 韩版系。学妹 提交于 2020-02-10 12:43:35
/// <summary> /// 重写回传的处理 /// </summary> /// <param name="actionExecutedContext"></param> public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) { // //if ( actionExecutedContext.ActionContext != null ) //{ // var mm = (actionExecutedContext.ActionContext.Response.Content as ObjectContent).Value; //重新封装返回值 HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK) { Content = new ObjectContent(result.GetType(), result, new JsonMediaTypeFormatter()) }; actionExecutedContext.Response = response; } base.OnActionExecuted(actionExecutedContext); } 来源:

SpringBoot常用注解解析

时间秒杀一切 提交于 2020-02-10 11:21:34
@RestController 将返回的对象数据直接以 JSON 或 XML 形式写入 HTTP 响应(Response)中。绝大部分情况下都是直接以 JSON 形式返回给客户端,很少的情况下才会以 XML 形式返回。转换成 XML 形式还需要额为的工作,上面代码中演示的直接就是将对象数据直接以 JSON 形式写入 HTTP 响应(Response)中。关于@Controller和@RestController 的对比,我会在下一篇文章中单独介绍到(@Controller +@ResponseBody= @RestController)。 @RequestMapping :上面的示例中没有指定 GET 与 PUT、POST 等,因为@RequestMapping默认映射所有HTTP Action,你可以使用@RequestMapping(method=ActionType)来缩小这个映射。 @PostMapping实际上就等价于 @RequestMapping(method = RequestMethod.POST),同样的 @DeleteMapping ,@GetMapping也都一样,常用的 HTTP Action 都有一个这种形式的注解所对应。 @PathVariable :取url地址中的参数。@RequestParam url的查询参数值。 @RequestBody

springmvc拦截器入门及其执行顺序源码分析

时光怂恿深爱的人放手 提交于 2020-02-10 09:57:29
springmvc拦截器是偶尔会用到的一个功能,本案例来演示一个较简单的springmvc拦截器的使用,并通过源码来分析拦截器的执行顺序的控制。 具体操作步骤为: 1、maven项目引入spring依赖 2、配置web.xml中的DispatcherServlet 3、准备两个拦截器,并在springmvc配置文件中进行配置管理 4、准备业务类,该类转发到一个JSP页面,并在页面做后台打印 5、测试发送请求到业务类,查看执行顺序 6、源码分析 7、总结以及代码附件 ———————————————————————————————————————————————————————————— 下面开始开发! 1、maven项目引入spring依赖 [XML] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 < dependencies > < dependency > < groupId >org.springframework</ groupId > < artifactId >spring-context</ artifactId > < version >5.0.2.RELEASE</ version > </

flask 视图函数的使用

主宰稳场 提交于 2020-02-10 04:49:35
flask框架 视图函数当中 各种实用情况简单配置 1 建立连接 2 路由参数 3 返回网络状态码 4 自定义错误页面 5 重定向 6 正则url限制 和 url 优化 7 设置和获取cookie 1 #coding:utf8 2 # 导入flask 3 from flask import Flask,abort,redirect,make_response,request 4 from werkzeug.routing import BaseConverter 5 6 7 # Flask 接受一个参数__name__ 作用是指明应用的位置 8 app = Flask(__name__) 9 10 11 12 ''' 13 1 建立一个前后台链接 14 装饰器的作用是陆游映射到视图函数index 15 访问根目录就会进入index视图函数 16 ''' 17 @app.route('/') 18 def index(): 19 # 返回后会调用make_response 20 return "你好 世界!" 21 22 23 ''' 24 2 给路由传参数 25 传递的参数在<name>当中 这个变量名称也要传递给视图函数 26 可以在<int:name> 或者<string:name> 指定传递参数的类型 27 不指定类型默认使用string类型 28 ''' 29 @app

微服务之间的通讯安全(四)-JWT优化之日志、错误处理、限流及JWT改造后执行流程梳理

吃可爱长大的小学妹 提交于 2020-02-10 01:09:26
  前面我们已经完成了通过JWT的认证和授权的改造,可以看到我们的代码中没有认证和授权的过滤器(Filter)了,基本上由SpringSecurity的过滤器来接管了,接下来我们来看一下怎么在SpringSecurity的过滤器链上加上我们自己的逻辑,比如日志和限流。 1、在SpringSecurity过滤器链上添加审计过滤器 1.1、创建日志过滤器,因为我们根据我们之前审计机制的位置,要把日志过滤器放到认证之后,授权之前。 认证的过滤器会把JWT令牌转化为Authentication,然后放到安全上下文中, getPrincipal()方法获取到的就是登陆的用户名。 /** * 审计过滤器 * * @author caofanqi * @date 2020/2/9 22:06 */ @Slf4j public class GatewayAuditLogFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { String username

Go基础编程实践(九)—— 网络编程

好久不见. 提交于 2020-02-09 18:28:47
下载网页 package main import ( "io/ioutil" "net/http" "fmt" ) func main() { url := "http://www.cnblogs.com/GaiheiluKamei" response, err := http.Get(url) if err != nil { panic(err) } defer response.Body.Close() html, err2 := ioutil.ReadAll(response.Body) if err2 != nil { panic(err2) } // ReadAll返回[]byte fmt.Println(string(html)) } // 这种直接下载下来的网页用处不大,旨在提供思路 下载文件 package main import ( "net/http" "io" "os" "fmt" ) func main() { // 获取文件 imageUrl := "http://pic.uzzf.com/up/2015-7/20157816026.jpg" response, err := http.Get(imageUrl) if err != nil { panic(err) } defer response.Body.Close() // 创建保存位置 file,

1、Postman介绍

无人久伴 提交于 2020-02-09 17:16:04
Postman是google开发的一款功能强大的网页调试与发送网页HTTP请求,并能运行测试用例的的Chrome插件。其主要功能包括: 1、模拟各种HTTP requests 从常用的 GET、POST 到 RESTful 的 PUT 、 DELETE …等等。 甚至还可以发送文件、送出额外的 header。 2、Collection 功能(测试集合) Collection 是 requests的集合,在做完一個测试的時候, 你可以把這次的 request 存到特定的 Collection 里面,如此一來,下次要做同样的测试时,就不需要重新输入。而且一个collection可以包含多条request,如果我们把一个request当成一个test case,那collection就可以看成是一个test suite。通过collection的归类,我们可以良好的分类测试软件所提供的API.而且 Collection 还可以 Import 或是 Share 出來,让团队里面的所有人共享你建立起來的 Collection。 3、人性化的Response整理 一般在用其他工具來测试的時候,response的内容通常都是纯文字的 raw, 但如果是 JSON ,就是塞成一整行的 JSON。这会造成阅读的障碍 ,而 Postman 可以针对response内容的格式自动美化。 JSON、

Websocket、长连接、循环连接

谁说胖子不能爱 提交于 2020-02-09 10:59:50
【转】转自知乎高票回答 https://www.zhihu.com/question/20215561 一、WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算) 首先HTTP有1.1和1.0之说,也就是所谓的keep-alive,把多个HTTP请求合并为一个,但是Websocket其实是一个新协议,跟HTTP协议基本没有关系,只是为了兼容现有浏览器的握手规范而已,也就是说它是HTTP协议上的一种补充可以通过这样一张图理解 有交集,但是并不是全部。 另外Html5是指的一系列新的API,或者说新规范,新技术。Http协议本身只有1.0和1.1,而且跟Html本身没有直接关系。。 通俗来说,你可以用HTTP 协议 传输非Html 数据 ,就是这样=。= 再简单来说, 层级不一样 。 二、Websocket是什么样的协议,具体有什么优点 首先,Websocket是一个 持久化 的协议,相对于HTTP这种 非持久 的协议来说。 简单的举个例子吧,用目前应用比较广泛的PHP生命周期来解释。 1) HTTP的生命周期通过Request来界定,也就是一个Request 一个Response,那么 在 HTTP1.0 中 ,这次HTTP请求就结束了。 在HTTP1.1中进行了改进,使得有一个keep

JavaWeb--资源下载案例

前提是你 提交于 2020-02-08 22:11:10
图片的路径在web/img下: 网页代码: <!DOCTYPE html> < html lang = " en " > < head > < meta charset = " UTF-8 " > < title > Title </ title > </ head > < body > < a href = " /ServletTest_war_exploded/downloadServlet?filename=img1.jpg " > 图片1 </ a > </ body > </ html > servlet代码: @WebServlet ( "/downloadServlet" ) public class DownloadServlet extends HttpServlet { protected void doPost ( HttpServletRequest request , HttpServletResponse response ) throws ServletException , IOException { //1,获取请求参数 String filename = request . getParameter ( "filename" ) ; //2,使用字节输入流加载文件进内存 //2.1找到文件服务器路径 ServletContext sc =

Writeup3

家住魔仙堡 提交于 2020-02-08 16:30:05
PHP 3个等号是变量值和类型都相同,而2个等号是变量相同 eg:100==“100”结果为真,100===“100”结果为假,因为类型不同 echo可以输出一个或多个字符串,print只允许输出一个字符串 SQL 选择: select * from table from 范围 eg:一道sql题 查看源码 1’报错由于union注入于是构造1’ union select 1,2,3,4# 得到结果: 发现个数不太对 开始试1’ union select1,2,3# 显示密码错误 试试123,3正确 得到结果: 说明2是注入点 构造1’ union select 1,(select name from users2 limit 0,1),3# 得到结果 -构造1’ union select 1,(select name from users2 limit 1,1),3# 额外:解释limit作用 select * from table limit 10 显示前10行数据,显示1~10条数据 select * from table limit1,10 检索 从第二行开始,显示10条,即2~11 Python的requests库 网络爬虫通过HTTP库向目标发起请求就是发送一个request。如果服务器响应,就得到response,就是页面的内容 网络爬虫:是按照规则自动抓