构建RESTful服务

一、RESTful介绍

RESTful是一种互联网软件服务的架构原则,如果一个架构符合RESTful原则,则称之为RESTful架构。

二、RESTful的特点

  • 每一种URL代表一种资源
  • 客户端使用GET、POST、PUT、DELETE四种表示操作方式的动词对服务端资源进行操作,GET表示获取资源,POST表示新建资源,PUT表示更新资源,DELETE表示删除资源。
  • 通过操作资源的表现形式来实现服务端请求操作。
  • 资源的表现形式是JSON或HTML。
  • 客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都包含必需的信息。

三、RESTful API

符合RESTful规范的Web API需要具备如下两个关键特性

  • 安全性:使用GET操作获取资源的时候,不会引起资源本身的变化,也就是说不会改变资源,也不会引起服务器的变化。
  • 幂等性:通俗来说就是对于同一个接口,访问一次和N次得到的效果相同,也就是服务器上资源的状态从第一次请求后就不再变化。

四、HTTP Method

HTTP提供GET、POST、DELETE、PUT等操作类型对某个Web资源进行Read、Create、Delete、Update操作。

HTTP状态码

HTTP状态码就是服务器向用户返回的状态码和提示信息,客户端的每一次请求,服务器都必须给出回应,回应包括HTTP状态码和数据两部分。

五、SpringBoot实现RESTful API

SpringBoot提供的spring-boot-starter-web组件完全支持开发RESTful API,提供了与REST操作方式对应的注解。

@GetMapping:处理GET请求,获取资源。

@PostMapping:处理POST请求,新增资源。

@PutMapping:处理PUT请求,更新资源。

@DeleteMapping:处理DELETE请求,删除资源。

@PatchMapping:处理PATCH请求,更新部分资源。

@RestController
public class UserController {
    @GetMapping("/user/{id}")   //{}表示id是动态的
    public String getUserById(@PathVariable int id){  //想拿路径下的参数,一定要加注解
        System.out.println(id);
        return "根据ID获取用户信息";
    }
    @PostMapping("/user")
    public String save(User user){
        return "添加用户";
    }
    @PutMapping("/user")
    public String Update(User user){
        return "更新用户";
    }
    @DeleteMapping("/user/{id}")
    public String deleteById(@PathVariable int id){
        return "根据ID删除用户信息";
    }
}

访问浏览器,出现以下结果:

六、Swagger

什么是Swagger?

Swagger是一个规范完整的框架,是非常流行的API表达工具,能够自动生成完善的RESTful API文档,同时根据后台代码的修改同步更新,提供完整的页面来测试API。

使用Swagger生成Web API文档

在SpringBoot项目中集成Swagger非常简单,只需在项目中引入springfox-swagger2和springfox-swagger-ui依赖即可。

<!--导入swagger依赖-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>

进行配置

@Configuration   //告诉Spring目录 这个类是一个配置类
@EnableSwagger2  //启用Swagger2功能
public class Swagger2Config {
    @Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com"))
                .paths(PathSelectors.any()).build();
    }
    private ApiInfo apiInfo(){
        return new ApiInfoBuilder().title("演示项目API")
                .description("学习Swagger2的演示项目")
                .build();
    }
}

访问swagger-ui.html即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偶莫耶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值