您现在的位置是:主页 > news > 网站建设三原则/全球搜索大全
网站建设三原则/全球搜索大全
admin2025/6/27 10:32:25【news】
简介网站建设三原则,全球搜索大全,学历提升报名,杭州律师Quarkus 实战二:开发REST ful 服务实现简单的curd 概述 Quarkus集成了RESTEasy,这是一种用于定义REST API的JAX-RS实现 参考文档: Quarkus 文档 JAVA JAX-RS文档 创建服务端点 JAX-RS是Quarkus 用来定义 RESTEasy默认的框架,…
Quarkus 实战二:开发REST ful 服务实现简单的curd
概述
Quarkus集成了RESTEasy,这是一种用于定义REST API的JAX-RS实现
参考文档:
Quarkus 文档
JAVA JAX-RS文档
创建服务端点
JAX-RS是Quarkus 用来定义 RESTEasy默认的框架,你需要使用 Path GET,POST,PUT等动词注解来定义执行的方法
例如:
@Path("/hello")
public class ExampleResource {/*** GET 请求方式 Produces(MediaType.TEXT_PLAIN) 定义返回的媒体类型*/@GET@Produces(MediaType.TEXT_PLAIN)public String hello() {return "Hello from RESTEasy Reactive";}}
以上实现的就是一个 GET 请求方法,用于请求查询数据的方法,
Produces 注解 用于定义返回的数据类型。
有效的HTTP动词注解: @GET、@POST、@PUT、@DELETE、@PATCH、@HEAD和@OPTIONS
获取请求参数
如何在方法中获取请求的参数,JAX-RS 规范中提供了一些内置的注解可以帮助我们获取参数:
@QueryParam 获取 url 请求参数 例如: name=12456 @QueryParam(“name”)
@HeaderParam 获取 Header 中的参数,常用来获取authorization 认证授权
@Context 定义一个对象,常用来获取 body中的数据,例如 post put方法使用
@FormParam 获取 form 表单提交参数
@CookieParam 获取cookie 参数
例子:
/*** GET 请求方式 Produces(MediaType.TEXT_PLAIN) 定义返回的媒体类型* Context 获取请求体信息* QueryParam 获取请求参数* HeaderParam 获取Header 参数*/@GET@Produces(MediaType.TEXT_PLAIN)public String hello(@Context User user,@FormParam("title") String title,@CookieParam("Cookie") String cookie,@QueryParam("name") String name, @HeaderParam("auth") String auth) {return "Hello from RESTEasy Reactive";}
实现CRUD
1.加入pom依赖:
<dependencies><dependency><groupId>io.quarkus</groupId><artifactId>quarkus-arc</artifactId></dependency><dependency><groupId>io.quarkus</groupId><artifactId>quarkus-jdbc-mysql</artifactId></dependency><dependency><groupId>io.quarkus</groupId><artifactId>quarkus-hibernate-orm</artifactId></dependency><dependency><groupId>io.quarkus</groupId><artifactId>quarkus-hibernate-orm-panache</artifactId></dependency><dependency><groupId>io.quarkus</groupId><artifactId>quarkus-smallrye-openapi</artifactId></dependency><dependency><groupId>io.quarkus</groupId><artifactId>quarkus-mailer</artifactId></dependency><dependency><groupId>io.quarkus</groupId><artifactId>quarkus-elasticsearch-rest-high-level-client</artifactId></dependency><dependency><groupId>io.quarkus</groupId><artifactId>quarkus-hibernate-validator</artifactId></dependency><dependency><groupId>io.quarkus</groupId><artifactId>quarkus-junit5</artifactId><scope>test</scope></dependency><dependency><groupId>io.quarkus</groupId><artifactId>quarkus-resteasy</artifactId></dependency><dependency><groupId>io.quarkus</groupId><artifactId>quarkus-resteasy-jackson</artifactId></dependency><dependency><groupId>jakarta.persistence</groupId><artifactId>jakarta.persistence-api</artifactId></dependency><dependency><groupId>io.rest-assured</groupId><artifactId>rest-assured</artifactId><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</version></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.9</version></dependency></dependencies>
orm 框架我们用 hibernate 数据库用 mysql
2.properties 配置
quarkus.package.type=uber-jar
quarkus.banner.enabled=false
quarkus.http.port=8080quarkus.datasource.jdbc.validation-query-sql=select 1
quarkus.hibernate-orm.database.generation=update
# datasource configuration
quarkus.datasource.db-kind=mysql
%dev.quarkus.datasource.username=root
%dev.quarkus.datasource.password=root
%dev.quarkus.datasource.jdbc.url=jdbc:mysql://localhost:3306/user?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8
3.实现代码
控制层:
/*** 可以定义响应的请求类型: @GET、@POST、@PUT、@DELETE、@PATCH、@HEAD和@OPTIONS*/
@Path("/hello")
public class ExampleResource {private final UserService userService;public ExampleResource(UserService userService) {this.userService = userService;}/*** GET 请求方式 Produces(MediaType.TEXT_PLAIN) 定义返回的媒体类型* Context 获取请求体信息* QueryParam 获取请求参数* HeaderParam 获取Header 参数*/@GET@Path("/getUser")@Produces(MediaType.TEXT_PLAIN)public String getUser(@QueryParam("id") String id) {return new Gson().toJson(userService.getUser(id));}/*** 创建 Consumes(MediaType.TEXT_PLAIN) 定义可接受的参数类型*/@POST@Path("/createUser")@Produces(MediaType.TEXT_PLAIN)public String createUser(User user) {userService.createUser(user);return "创建成功";}@DELETE@Path("/deleteUser")@Produces(MediaType.TEXT_PLAIN)public String deleteUser(@QueryParam("id") String id) {userService.deleteUser(id);return "删除成功";}@PUT@Path("/updateUser")@Produces(MediaType.TEXT_PLAIN)public String updateUser(User user) {userService.updateUser(user);return "更新成功";}}
service层:
@Slf4j
@ApplicationScoped
public class UserService {public User getUser(String id){return User.findById(Integer.valueOf(id));}@Transactionalpublic void createUser(User user){User.persist(user);}@Transactionalpublic void deleteUser(String id){User.deleteById(Integer.valueOf(id));}@Transactionalpublic void updateUser(User user){User.updateUser(user);}
}
实体类层:
@Data
@Entity
@Accessors(chain = true)
@Table(name = "user")
public class User extends PanacheEntityBase implements Serializable {private String name;@Id@GeneratedValue(strategy = GenerationType.AUTO)@Column(name = "id", updatable = false)private Integer id;private Integer age;private String email;private String names;private Long price;public static void updateUser(User user){update("age = :age where id = :id ", Parameters.with("age", user.getAge()).and("id",user.getId()));}
}
如果这篇文章,有帮助到大家的,请给作者一个一键三连,谢谢