JDK HTTP Server代码库包含真实的世界的示例(CRUD,auth,高级模式等),
创建此代码库是为了演示使用JDK HTTP Server构建的完全成熟的全栈应用程序,包括CRUD操作,身份验证,路由,分页等。
有关如何与其他前端/后端一起工作的更多信息,请前往RealWorld repo。
运行演示部署在这里
这是由几个组件组成的。主要
- jdk.httpserver模块,提供针对其编程的API
- Jetty,它为jdk.httpserver提供了实际的支持实现
- 数据库的PostgreSQL
- RainbowGum用于日志
执行具体任务:
- dev.mccue.jdk.httpserver用于提供Body抽象
- dev.mccue.jdk.httpserver.regexrouter用于基本请求路由
- dev.mccue.json用于读取和写入 JSON
- dev.mccue.jdk.httpserver.json用于使用 JSON 作为并从sBody中读取它HttpExchange
- dev.mccue.urlparameters用于解析查询参数
- dev.mccue.jdbc用于UncheckedSQLException和SQLFragment
- io.github.cdimascio.dotenv.java用于本地开发.env文件
- slugify用于将文本转换为 url sage slug
- com.zaxxer.hikari用于连接池
- bcrypt用于密码盐和哈希
- org.slf4j作为日志记录外观
几乎所有代码都包含在RealWorldAPI类中。如果此处做出的任何选择冒犯了您的感受,我鼓励您分叉并展示您希望完成的方式。如果您认为某些事情做得不够好或客观上存在问题,请提出问题。
具体来说,我鼓励大家
- 尝试拆分 RealWorldAPI 类。
- 尝试使用他们所选择的数据库抽象。 如果使用 Hibernate、JOOQ 或 JDBI,情况会怎样?
- 尝试使用他们所选择的 JSON 库。 尝试将持久化/服务等整体拆分,这样会更好吗?
- 添加单元测试。 对于这个问题,我可以直接使用 API 测试,但使用 JUnit 测试会怎样呢?
先决条件
- Java 22 或更高版本
- SDKMan
- Docker
用法
首先,启动 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已提交到存储库。请注意,一般来说,这是一个坏主意/做法,但这里唯一的秘密是本地数据库连接,所以没问题。
https://www.jdon.com/76454.html