Files
test-api/src/index.ts
T
2026-10-11 18:36:38 +08:00

118 lines
3.1 KiB
TypeScript

import { Hono } from "hono";
import { ApiResponse } from "./modules/api_response";
import { validator } from "hono/validator";
import { postUser } from "./service/postUser";
import { isEmpty } from "./utils/is_empty";
import { getUser } from "./service/getUser";
import { bodyLimit } from "hono/body-limit";
import { getRandom } from "./service/getRandom";
import { responseStr } from "./const/response_str";
const tmpApp: Hono = new Hono()
export const app = tmpApp.basePath("/test/")
app.get("/user", (c) => {
const re = getUser()
return c.json(ApiResponse.success(200, responseStr.USER_GET_SUCCESS, re))
})
app.post(
"/user",
validator("json", (val, c) => {
if (isEmpty(val.name, val.passwd)) {
c.status(400)
return c.json(ApiResponse.err(400, responseStr.REQ_PARAM_ERR))
}
return val
}),
c => {
const re = postUser()
return c.json(ApiResponse.success(200, responseStr.USER_ADD_SUCCESS, re))
}
)
app.patch("/user",
validator("json", (val, c) => {
if (isEmpty(val.id, val.changeFields)) {
c.status(400)
return c.json(ApiResponse.err(400, responseStr.REQ_PARAM_ERR))
}
return val
}),
c => {
return c.json(ApiResponse.success(200, responseStr.USER_MOD_SUCCESS))
}
)
app.put("/user",
validator("json", (val, c) => {
if (isEmpty(val.id, val.changeFields)) {
c.status(400)
return c.json(ApiResponse.err(400, responseStr.REQ_PARAM_ERR))
}
return val
}),
c => {
return c.json(ApiResponse.success(200, responseStr.USER_MOD_SUCCESS))
}
)
app.delete("/user",
validator("json", (val, c) => {
if (isEmpty(val.id)) {
c.status(400)
return c.json(ApiResponse.err(400, responseStr.REQ_PARAM_ERR))
}
return val
}),
async (c) => {
const id = await c.req.json()
return c.json(ApiResponse.success(200, responseStr.USER_DEL_SUCCESS))
}
)
app.post("/file",
bodyLimit({
maxSize: 5 * 1024 * 1024,
onError: (c) => {
return c.json(ApiResponse.err(400, responseStr.FILE_SIZE_LIMIT_5M))
}
}),
async (c) => {
const body = await c.req.parseBody()
const file = body["file"]
if (!(file instanceof File)) {
return c.json(ApiResponse.err(400, responseStr.FILE_TYPE_INVALID))
}
const fileName = file.name
const fileSize = file.size
return c.json(ApiResponse.success(200, responseStr.FILE_UPLOAD_SUCCESS, {
fileName,
fileSize
}))
}
)
app.get("/random",
validator("query", (val, c) => {
if (isEmpty(val.typeList, val.length)) {
c.status(400)
return c.json(ApiResponse.err(400, responseStr.REQ_PARAM_ERR))
}
return val
}),
c => {
return getRandom(c)
}
)
app.notFound((c) => {
console.log(`Not found [${c.req.method}]: ${c.req.path}`);
return c.json(ApiResponse.err(404, responseStr.API_NOTFOUND))
})
export default {
port: "8080",
fetch: app.fetch
}