菜鸟学习SpringBoot——(四)HTTP请求

本文介绍了SpringBoot中Controller层的主要职责,包括如何处理HTTP请求和响应,以及重要注解的使用。同时,讲解了HTTP请求方法的用途,如GET、POST等,并详细阐述了RESTful风格的API设计原则,如资源导向、状态码使用等,旨在帮助初学者更好地理解和应用SpringBoot及RESTful API。
摘要由CSDN通过智能技术生成

/*本人菜鸟一只,刚开始学习spring boot,按照导师给的学习计划整理的学习内容,希望能对和我一样是菜鸟,刚学习spring boot的童鞋有帮助。由于菜鸟一只,以下内容没有能力原创,里面的内容都是各种百度整理出来的(东拼西凑),所以作者数量太多,不方便注明,如有冒犯,我立马删帖。请各位大佬多多海涵!*/ 

1、理解Controller层

Controller层主要工作:

从HTTP请求中获取信息,提取参数,并将其分发给不同的处理服务(service层),并向前端返回service层处理后的数据(JSON数据或者ModelAndView对象)。

Controller层重要注解:

  • @Controller

  • @RequestMapping

  • @ResponseBody

  • @RestController

  • @GetMapping

  • @PostMapping

@Controller

负责标识这个类是Controller类,Spring检测到@Controller注解时,将其自动注册为Controller对象

@RequestMapping

@RequestMapping注解告知Spring这个类或者函数映射到哪个URL,通常@RequestMapping参数有:

@RequestMapping(
        path = { "/test" },                      //访问路径
        params = { "name", "userId"},            //URL携带的参数
        method = { RequestMethod.GET},           //请求方式
        consumes = {"text/plain", "application/"},
        produces = "text/plain",
        headers = "content-type=text/"
)

(1)@RequestMapping参数为空时,表示该函数或者类映射剩余所有页面,也就是404页面 (2)@RequestMapping不指定参数名时,默认为path参数 (3)@RequestMapping的path参数可以是个变量,通过{}来标识 (4)@PathVaiable用于读取URL中的数据

@RestController

用于标注控制层组件(如struts中的action),包含@Controller和@ResponseBody

RestController就是ajax提交,一般返回json格式

2、http请求方式及使用场景

  • GET:基于URL地址问号传参;一般用于获取服务器资源,例如查询数据库的数据等

  • POST:基于"请求"主体把信息发送给服务器;一般用于请求新增或修改资源,例如提交表单,新增用户等

  • HEAD:类似于GET请求,不过返回的响应中没有具体的内容,用于获取报头

  • PUT:修改资源

  • DELETE:删除某个资源

  • CONNECT:建立连接渠道,用于代理服务器

  • OPTIONS:一般用来获取某个资源的metadata信息,比如某份报告的关键描述信息等

  • TRACE:用来确认连接过程中发生的一些操作

  • PATCH:用来对已知资源进行局部更新

3、restful风格

为了不同的前端和后端进行信息交互,Resultful API是一种比较流行的一种API规范。主要适用于客户端和服务器端交互的软件。是基于http协议实现。目的是为了提高系统的可伸缩性,降低应用之间的耦合度,方便框架分布式处理程序。基于这个风格的软件可更加的简单、更有层次,更易于实现缓存的机制。

在resultful风格中,用户请求的url使用同一个URL而用请求方式:get/post/delete/put等方式对请求的处理方法进行区分。这样可以在前后台分离的开发中让前端开发人员不会对请求的资源地址产生混淆,形成一个统一的接口。

resultful API规范:

1、根据method的不同,做不同的操作,示例:

@app.route('/order',methods=['GET','POST','PUT','DELETE'])
def order():
    if request.method == 'GET':
        return '获取数据'
    elif request.method == 'POST':
        return '创建数据'
    elif request.method == 'PUT':
        return '更新数据'
    elif request.method == 'DELETE':
        return '删除数据'

2、API与用户的通信协议,总是使用HTTPS协议

3、域名

子域名方式(解决跨域问题),如:

www.wushao.com

api.wushaoxing.com(存在跨域问题)

url方式,如:

www.wushao.com

www.wushao.com/api

这样一看到这种url就知道这是一个接口

4、版本

url: www.wushao.com/api/v1

5、面向资源编程,网络上任何东西都是资源,均使用名词表示

如一开始用的order

www.wushao.com/api/v1/order

6、过滤,通过在url上传参的形式传递搜索条件

如:www.wushao/api/v1/order?page=2 翻到第二页

7、状态码

常用的有以下几个:

200系列是成功 300系列是重定向问题 400系列客服端错误 500系列服务端错误

8、错误处理,返回错误信息

9、返回结果,针对不同操作,服务器向用户返回的结果应该符合以下规范

GET /order/ 返回资源对象的列表(数组) GET /order/1/ 返回单个资源对象 POST /order/ 返回新生成的资源对象 PUT /order/1/ 返回完整的资源对象 PATCH /order/1/ 返回完整的资源对象 DELETE /order/1/ 返回一个空文档

10、Hypermedia API,RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值