JDK HTTP 服务器:真实世界后端开源演示

摘要:创建此代码库是为了演示使用jdk HTTP Server构建的完全成熟的全栈应用程序,包括CRUD操作,身份验证,路由,分页等。有关如何与其他前端/后端一起工作的更多信息,请前往RealWorld repo。

JDK HTTP Server代码库包含真实的世界的示例(CRUD,auth,高级模式等),

创建此代码库是为了演示使用jdk HTTP Server构建的完全成熟的全栈应用程序,包括CRUD操作,身份验证,路由,分页等。
有关如何与其他前端/后端一起工作的更多信息,请前往RealWorld repo。

运行演示部署在这里


这是由几个组件组成的。主要

jdk.httpserver模块,提供针对其编程的APIJetty,它为jdk.httpserver提供了实际的支持实现数据库的PostgreSQLRainbowGum用于日志

执行具体任务:

dev.mccue.jdk.httpserver用于提供Body抽象dev.mccue.jdk.httpserver.regexrouter用于基本请求路由dev.mccue.JSON用于读取和写入 JSONdev.mccue.jdk.httpserver.json用于使用 JSON 作为并从sBody中读取它HttpExchangedev.mccue.urlparameters用于解析查询参数dev.mccue.jdbc用于UncheckedSQLException和SQLFragmentio.github.cdimascio.dotenv.java用于本地开发.env文件slugify用于将文本转换为 url sage slugcom.zaxxer.hikari用于连接池bcrypt用于密码盐和哈希org.slf4j作为日志记录外观

几乎所有代码都包含在RealWorldAPI类中。如果此处做出的任何选择冒犯了您的感受,我鼓励您分叉并展示您希望完成的方式。如果您认为某些事情做得不够好或客观上存在问题,请提出问题。

具体来说,我鼓励大家

尝试拆分 RealWorldAPI 类。尝试使用他们所选择的数据库抽象。 如果使用 Hibernate、JOOQ 或 JDBI,情况会怎样?尝试使用他们所选择的 JSON 库。 尝试将持久化/服务等整体拆分,这样会更好吗?添加单元测试。 对于这个问题,我可以直接使用 API 测试,但使用 JUnit 测试会怎样呢?

先决条件

Java 22 或更高版本SDKManDocker

用法
首先,启动 postgres
$ docker compose up -d

然后安装 MyBatis Migrations。目前使用 SDKMan 最容易做到这一点。
$ sdk install mybatis

将migrations应用到数据库
$ cd migrations
$ migrate up
$ cd ..

然后运行服务器

在编辑器中打开项目通过 maven 运行它( ./mvnw exec:java -Dexec.mainClass="dev.mccue.jdk.httpserver.realworld.Main")通过docker运行


$ docker build -t realworld .
$ docker run realworld

该项目的文件.env已提交到存储库。请注意,一般来说,这是一个坏主意/做法,但这里唯一的秘密是本地数据库连接,所以没问题。

来源:解道Jdon

相关推荐