Build CRUD APIs Instantly with Magic-API in Spring Boot

This tutorial introduces the magic‑api Java framework, shows how to integrate it with Spring Boot, configure data sources, create the necessary MySQL tables, and implement full CRUD operations, parameter validation, result transformation, transaction handling, and Swagger documentation using concise scripts.

Su San Talks Tech
Su San Talks Tech
Su San Talks Tech
Build CRUD APIs Instantly with Magic-API in Spring Boot

magic-api Overview

magic-api is a Java‑based rapid API development framework that lets you create HTTP interfaces through a UI without writing Controller, Service, DAO, Mapper, XML, or VO classes.

Usage

Below is a practical example of using magic-api to develop API interfaces.

Using in Spring Boot

magic-api natively supports Spring Boot and can be integrated seamlessly.

Add the magic-api starter dependency to pom.xml.

<!-- Interface rapid development framework magic-api -->
<dependency>
  <groupId>org.ssssssss</groupId>
  <artifactId>magic-api-spring-boot-starter</artifactId>
  <version>1.0.2</version>
</dependency>

Add datasource and magic-api configuration to application.yml.

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/magic_api?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password: root
magic-api:
  web: /magic/web
  resource:
    type: database
    tableName: magic_api_file
    prefix: /magic-api
    readonly: false
    sql-column-case: camel
  page-config:
    size: size
    page: page
    default-page: 1
    default-size: 10

Create the required tables in MySQL: magic_api_file and pms_brand.

CREATE TABLE `magic_api_file` (
  `id` bigint(255) NOT NULL AUTO_INCREMENT,
  `file_path` varchar(255) DEFAULT NULL,
  `file_content` text,
  PRIMARY KEY (`id`)
);

CREATE TABLE `pms_brand` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `big_pic` varchar(255) DEFAULT NULL,
  `brand_story` varchar(255) DEFAULT NULL,
  `factory_status` bit(1) DEFAULT NULL,
  `first_letter` varchar(255) DEFAULT NULL,
  `logo` varchar(255) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `product_comment_count` int(11) DEFAULT NULL,
  `product_count` int(11) DEFAULT NULL,
  `show_status` bit(1) DEFAULT NULL,
  `sort` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4;

Start the project and access the UI at http://localhost:8080/magic/web.

CRUD Operations

Example of creating a brand:

// Insert new brand
return db.table('pms_brand').insert(body);

Configure the interface as POST /create with request body.

Example of querying by ID:

return db.table('pms_brand')
    .where()
    .eq('id', path.id)
    .selectOne();

Configure as GET /detail/{id} with path variable.

Update example:

return db.table('pms_brand').primary('id', body.id).update(body);

Delete example:

return db.update('delete from pms_brand where id=#{id}');

Parameter Validation

import assert;
assert.notEmpty(body.name, 400, 'Name cannot be empty!');
assert.notEmpty(body.firstLetter, 400, 'First letter cannot be empty!');
return db.table('pms_brand').insert(body);

Result Transformation

var list = db.table('pms_brand').select();
return list.map(item => ({
    name: item.name,
    firstLetter: item.firstLetter,
    showStatus: item.showStatus ? 'Not shown' : 'Shown'
}));

Transaction Support

import assert;
var val = db.transaction(() => {
    var exist = db.table('pms_brand')
        .where().eq('id', body.id).selectOne();
    assert.notNull(exist, 404, 'Brand not found!');
    db.table('pms_brand').primary('id', body.id).update(body);
    return v2;
});
return val;

Swagger Integration

Add Swagger dependencies to pom.xml and configure in application.yml:

<dependencies>
  <dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
  </dependency>
  <dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
  </dependency>
</dependencies>
magic-api:
  swagger-config:
    name: MagicAPI Test API
    title: MagicAPI Swagger Docs
    description: MagicAPI test interface information
    version: 1.0
    location: /v2/api-docs/magic-api/swagger2.json

Access Swagger UI at http://localhost:8080/swagger-ui.html to view the generated documentation.

Conclusion

magic-api provides a convenient way to develop APIs with simple scripts, though it remains a niche framework with room for further development.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

BackendJavaSpring BootCRUDAPI developmentSwaggermagic-api
Su San Talks Tech
Written by

Su San Talks Tech

Su San, former staff at several leading tech companies, is a top creator on Juejin and a premium creator on CSDN, and runs the free coding practice site www.susan.net.cn.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.