Frontend/Dart&Flutter

[단기 스터디] 2일차

shin0112 2024. 3. 14. 22:16

0. 들어가며

어제 이어서 springboot랑 flutter랑 연동해 볼 예정이다. 

책에서는 그냥 jar 파일 다운받아서 사용해보라고 하는데, 나는 백엔드 개발을 할 예정이니까 내부적으로도 어떻게 돌아가야 하는지 알아야 될 것 같아서 springboot로 직접 코딩했다.

1. SpringBoot 

1.1. 코딩하기

딱히 뭔가를 만들어 보려는 건 아니고 springboot랑 flutter가 잘 연동되는지 확인하기 위해서 간단한 user 기능만 작성할 예정이다. 

  • user 정보 입력하기
  • user 정보 찾기

귀찮아서 dto도 안 만들었다..

 

순서대로 User, UserRepository, UserService, UserController다.

더보기
@Entity
@Getter
@NoArgsConstructor
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "user_id")
    Long userId;
    @Column
    String name;
    @Column
    Long age;
    @Column
    String comment;

    public User(String name, Long age, String comment) {
        this.name = name;
        this.age = age;
        this.comment = comment;
    }

}

 

@RepositoryRestResource
public interface UserRepository extends JpaRepository<User, Long> {
}

 

@Service
@RequiredArgsConstructor
public class UserService {

    private final UserRepository userRepository;

    public ApiResponse<User> saveUserInfo(User user) {
        User save = userRepository.save(user);
        return ApiResponse.success(SuccessMessage.UPLOAD_USER_SUCCESS, save);
    }

    public ApiResponse<User> findUserInfo(Long userId) {
        User user = userRepository.findById(userId).orElseThrow(() -> new NotFoundException(ErrorMessage.NOT_EXIST_USER));
        return ApiResponse.success(SuccessMessage.GET_USER_SUCCESS, user);

    }
}

 

@RestController
@RequiredArgsConstructor
public class UserController {

    private final UserService userService;
    @PostMapping("/users")
    ApiResponse<User> saveUserInfo(User user) {
        return userService.saveUserInfo(user);
    }

    @GetMapping("/users/{userId}")
    ApiResponse<User> findUserInfo(Long userId) {
        return userService.findUserInfo(userId);
    }
    
}

 

오잉 값이 안들어갔다. controller에 @RequestBody랑 @PathVariable을 안 넣어줌..

@PostMapping("/users")
ApiResponse<User> saveUserInfo(@RequestBody User user) {
    return userService.saveUserInfo(user);
}

@GetMapping("/users/{userId}")
ApiResponse<User> findUserInfo(@PathVariable Long userId) {
    return userService.findUserInfo(userId);
}

 

 

성공 ^p^

 

1.2. 빌드하기

spring boot 빌드 과정은 다음과 같다.

  1. 프로젝트 경로로 가기
  2. gradlew build 명령어 사용
    • plain.jar랑 그냥.jar가 나오는데, plain 버전은 의존성 없는 클래스랑 리소스 파일만 포함하는 거라서 상관 안해도 된다.
  3. cd build/libs 로 이동
  4. java -jar '프로젝트 이름.jar'

jar로 실행한 다음 postman으로 실행 성공

 

이제 flutter 만들고 배포하는 걸 해보고 싶었는데, 시간이 촉박하고 aws가 더 급해서 기회가 되면 하려고 한다.

원래 dart&flutter 공부하려고 했는데, 결국 한 건 springboot 배포..