RESTful请求映射及其原理

简介: RESTful请求映射及其原理

请求映射



rest的使用与原理


  • @xxxMapping;


  • Rest风格支持(使用 HTTP 请求方式动词来表示对资源的操作)


  • 以前: /getUser 获取用户 /deleteUser 删除用户 /editUser 修改用户 /saveUser 保存用户

现在: /user GET-获取用户 DELETE-删除用户 PUT-修改用户 POST-保存用户

核心Filter;HiddenHttpMethodFilter


  • 用法: 表单method=post,隐藏域 _method=put

SpringBoot中手动开启

  • 扩展:如何把_method 这个名字换成我们自己喜欢的。


基于表单提交的RESTful原理


  1. 表单提交会带上[_method = put]
  2. 请求过来会被HiddenHttpMethodFilter拦截
  3. 处理请求(如果请求正常,才会放行)

4.然后内部进行处理,判断是否有请求。然后将请求转换为大写


5.(包装原生request)将原生的request转换成为HttpMethodRequestWrapper请求,然后HttpMethodRequestWrapper会重写HttpRequest的个体、Method 方法


在控制层请求发起的流程


在请求处理之前,需要先执行Filter。然后HiddenHttpMethodFilter将原生请求的getMethod重写了变成delete。 然后此时当进行请求的时候。getMethod已经变成了delete/put/,,,就与请求匹配了。


DispatcherServlet请求原理


  1. 他是处理所有请求的开始
  2. 他没有重写了doGet和doPost,在FrameworkServelt中调用了doGet和doPost。然后又调用了processRequest()。
  3. processRequest又调用类中的doService方法 。最终在DispacherSerlvet中做了doService的实现
  4. 在DispacherServlet中有一个doDisptch()就是请求转发。然后再doDisptch中才是一些真正有功能的我们需要的方法


所以说doDispach()才是每个请求都会调用的方法

protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {
  HttpServletRequest processedRequest = request;
  HandlerExecutionChain mappedHandler = null;
  boolean multipartRequestParsed = false;
  WebAsyncManager asyncManager = WebAsyncUtils.getAsyncManager(request);
  try {
    ModelAndView mv = null;
    Exception dispatchException = null;
    try {
    processedRequest = checkMultipart(request);
    multipartRequestParsed = (processedRequest != request);
    // 找到当前请求使用哪个Handler(Controller的方法)处理
    mappedHandler = getHandler(processedRequest);
                //HandlerMapping:处理器映射。/xxx->>xxxx

         

6.在doDispach()中有getHandler方法,他会找到我们此时调用需要找到的请求


7.在getHandler()方法中可以看到有个handerMappings 它会加载所有的请求(在应用启动的时候就会加载保存)


8.在HandlerMapping中保存的我们写的所有请求


9.在AbstractHandlerMethodMapping中有lookupHandlerMethod方法,在这个方法中我们才能匹配到所要找的请求


目录
相关文章
|
Java 测试技术 API
Java RESTful中的PATCH请求:局部更新与资源修改
在RESTful架构中,PATCH请求是一种用于局部更新已有资源的操作。PATCH请求允许客户端将部分数据发送到服务器,以便对资源进行局部修改,而不必替换整个资源。本文将引导您深入了解Java中使用PATCH请求构建RESTful API,探讨其特点、实现方式、用例以及在实际应用中的优势。
|
4月前
|
Java 网络架构 Spring
springboot中restful风格请求的使用
本文介绍了在Spring Boot中如何使用RESTful风格的请求,包括创建HTML表单页面、在application.yaml配置文件中开启REST表单支持、编写Controller层及对应映射处理,并进行服务启动和访问测试。HTML表单默认只支持GET和POST请求,因此对于DELETE和PUT请求,需要使用隐藏域`_method`来支持。
springboot中restful风格请求的使用
|
4月前
|
JSON Go API
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
|
4月前
|
XML 缓存 前端开发
springMVC02,restful风格,请求转发和重定向
文章介绍了RESTful风格的基本概念和特点,并展示了如何使用SpringMVC实现RESTful风格的请求处理。同时,文章还讨论了SpringMVC中的请求转发和重定向的实现方式,并通过具体代码示例进行了说明。
springMVC02,restful风格,请求转发和重定向
|
5月前
|
JSON 监控 中间件
多图详解万星 Restful 框架原理与实现
多图详解万星 Restful 框架原理与实现
|
8月前
|
前端开发 JavaScript
解决Ajax发送DELETE请求时后台无法接收到参数的问题(Restful风格)
解决Ajax发送DELETE请求时后台无法接收到参数的问题(Restful风格)
216 0
|
Java 测试技术 API
Java RESTful中的DELETE请求:资源的删除与数据清除
在RESTful架构中,DELETE请求是一种用于删除已有资源的关键操作。DELETE请求允许客户端请求服务器删除指定的资源,以及与之关联的数据。本文将引导您深入了解Java中使用DELETE请求构建RESTful API,探讨其特点、实现方式、用例以及在实际应用中的优势。
|
Java 测试技术 API
Java RESTful中的PUT请求:资源的更新与完整替换
在RESTful架构中,PUT请求是一种用于更新或完整替换资源的重要操作。PUT请求允许客户端发送数据到服务器,以更新已有资源的状态,或者用新数据完全替换旧资源。本文将引导您深入了解Java中使用PUT请求构建RESTful API,探讨其特点、实现方式、用例以及在实际应用中的优势。
|
XML Java 测试技术
Java RESTful中的POST请求:资源的创建与数据传递
在RESTful架构中,POST请求是一种用于创建新资源的重要操作。它不仅可以传递数据到服务器,还能够在服务器端创建新的资源并返回相应的状态。本文将带您深入了解Java中使用POST请求构建RESTful API,探讨其特点、实现方式、用例以及在实际应用中的优势。
|
缓存 Java 测试技术
探索Java RESTful中的GET请求:资源的获取与无状态通信
在现代Web应用开发中,HTTP的GET请求是一种常见而重要的通信方式。它是RESTful架构中的核心操作之一,用于获取资源的信息。本文将带您深入了解Java中使用GET请求来构建RESTful API,探讨其特点、实现方式、用例以及在实际应用中的优势。