This action will force synchronization from SnailClimb/jsoncat, which will overwrite any changes that you have made since you forked the repository, and can not be recovered!!!
Synchronous operation will process in the background and will refresh the page when finishing processing. Please be patient.
本项目已经同步到码云,地址:https://gitee.com/SnailClimb/jsoncat。
配套教程正在我的公众号“ JavaGuide”上更新,公众号后台回复“jsoncat”即可获取所有教程。 考虑到大部分是中文用户,最近会抽时间把注释都修改为中文并添加一些注释帮助大家理解代码。
原创开源不易,觉得不错的话,欢迎给良心作者 1 个 star 鼓励一下!
jsoncat 是我(Guide 哥,Gai 的哥)模仿 Spring Boot 写的一个轻量级的 HTTP 框架。
jsoncat 内置由 Netty 编写 HTTP 服务器,无需额外依赖 Tomcat 之类的 web 服务器。使用 Netty 几十行代码即可实现一个简易的 HTTP 服务,性能高且轻量。
为什么要写?
写这个东西只是自己个人的兴趣爱好使然,也不是说非要拿到项目上实际去使用,主要目的还是为了提高自己的编码能力。推荐小伙伴们也要尽量能够将自己的想法付诸于行动。
理论知识固然重要,但是脱离于实践的理论并不可靠。相比于 CRUD ,自己造个轮子,肯定是更有意思,也更能锻炼自己的编程能力和解决问题的能力。
功能实现上,没有太去模仿参考 Spring 的源码,那样的话没太大必要,完全就是按照自己的想法写的,会借鉴一些 Spring 源码的思想。
功能其实写的挺快的,大部分时间都在重构。讲真, 我已经很尽力地保证代码的可读性了。尽量使用最少的代码实现功能, 并且不影响可读性。
目前,我还不是特别满意,欢迎小伙伴们一起来完善啊!人多力量大!
@GetMapping
: 处理 Get 请求@PostMapping
:处理 Post 请求@RequestBody
: 接收前端传递给后端的 json 字符串@RequestParam
:获取 Get 请求的 URL 查询参数@PathVariable
: 获取 URL 中的参数/占位符@Autowired
:注入对象@Component
:声明对象被 IOC 容器管理@Qualifier
: 指定注入的bean@Aspect
@Pointcut
@Before
@After
@Order
@ControllerAdvice
@ExceptionHandler
@SpringBootApplication
@Configuration
User.java
:用户实体类
@Data
@AllArgsConstructor
public class User {
private String name;
private String des;
private Integer age;
}
UserDto.java
:用户业务处理类
@Component
public class UserService {
private Integer id = 1;
private final Map<Integer, User> users = new HashMap<Integer, User>() {
{
put(1, new User("盖伦", "德玛西亚", 22));
}
};
public User get(Integer id) {
return users.get(id);
}
public List<User> create(@RequestBody UserDto userDto) {
users.put(++id, new User(userDto.getName(), userDto.getDes(), userDto.getAge()));
return new ArrayList<>(users.values());
}
public void say() {
System.out.println("UserService say 你真帅!");
}
}
UserDto.java
: 创建用户的传输对象
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserDto {
private String name;
private String des;
private Integer age;
}
UserController.java
:用户业务与前端交互类
@RestController("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping
public User get(@RequestParam("name") String name, @RequestParam("des") String des, @RequestParam("age") Integer age) {
return new User(name, des, age);
}
@GetMapping("/{id}")
public User get(@PathVariable("id") Integer id) {
return userService.get(id);
}
@PostMapping
public List<User> create(@RequestBody UserDto userDto) {
return userService.create(userDto);
}
}
@PathVariable
传参Get 请求:@RequestParam
传参
当传入的参数类型不正确时:
当指定的参数未传递时:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。