スポンサーリンク

APIパターン別実装例 Webアプリケーション開発

SpringBootで登録画面用APIを作成する

投稿日:2021年3月23日 更新日:

SpringBootで登録画面用APIを作成する流れ

登録画面用APIのコントローラー層

@CrossOrigin (A)
@RestController
@RequestMapping(value= Urls.BOK_01) // value値は定数管理します。 
public class BookController {

    @Autowired private BookService bookService;  // (B)
    @Autowired private ModelMapper modelMapper;

    @PostMapping  // (C)
    public PostResponse post(@Validated @RequestBody PostRequest request) {
        MBook mBook = modelMapper.map(request, MBook.class);  // (D)
        MBook registered = bookService.register(mBook);
        PostResponse response = modelMapper.map(registered, PostResponse.class);
        return response;
    }
}
// (A)@CrossOrigin・・・CORS対策です。なくても動く人は省略してください。
// @RestController・・・Rest APIのコントローラーであることを宣言します。@Controllerでも良いですが、Rest APIであることを明示するためにこちらを使用します。
// Urls.BOK_01・・・パスは定数クラスにまとめておきます。


コンストラクターインジェクションの方が良い場合は書き換えます。


Postに対する実行メソッドであることを明示するために、@RequestMapppingではなく@PostMappingを推奨します。

モデルマッパーを使用して詰め替えます。




@Data
public class PostRequest {
    @NotBlank
    @Hiragana
    private String bookName;
    private String bookNameKana;
    private String authorName;
    private String authorNameKana;
    private String isbn;
    private LocalDate issuedAt;
    private Integer price;
    private LocalDateTime registerdAt;
}
@Data
public class PostResponse {
    private Integer bookId;
}

登録画面用APIのサービス層

public interface BookService {
    MBook register(MBook mBook);
}

@Service
public class BookServiceImpl implements BookService {

    @Autowired private MBookDao mBookDao;
    @Autowired private BookDao bookDao;
    @Autowired private ModelMapper modelMapper;

    @Override
    public MBook register(MBook mBook) {
        int inserted = mBookDao.insert(mBook);
        return mBook;
    }
}

登録画面用APIのデータ層

@Dao
@ConfigAutowireable
public interface MBookDao {
    /**
     * @param entity
     * @return affected rows
     */
    @Insert
    int insert(MBook entity);
}

Udemyのハンズオン動画講座でSpringBootのスキルを磨く!

スポンサーリンク

-APIパターン別実装例, Webアプリケーション開発

Copyright© 【Spring Hack】 , 2022 All Rights Reserved Powered by AFFINGER5.