您好,登錄后才能下訂單哦!
這篇文章主要介紹“怎么使用Remix寫API接口”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“怎么使用Remix寫API接口”文章能幫助大家解決問題。
普通 get/post api:即可滿足基本
RESTful API:有規范, 需要協同的
graphql:可控制需要的字段的,良好的跨端
其中如果是一些小項目,沒有必要規則化的項目,使用 get/post 處理就已經足夠了,如果項目有了很多的人要維護,并且有了一定的規模,為了方便管理,可以使用 RESTful API 的方式處理。graphql API 手動能力最強。
創建:POST /api/resources
讀取:GET /api/resources/:id
更新:PUT /api/resources/:id
刪除:DELETE /api/resources/:id
其中,:id 表示資源的唯一標識符。
loader 處理 get 請求
action 處理非 get 請求
export const loader = () => { return json({ get: 'loader get' }) }
import { json } from "@remix-run/node"; const handleNotGetRequest = function ({ request }) { const method = request.method; switch (method) { case "POST": return json({ code: 0, method: "POST", message: "添加成功" }); case "PUT": return json({ ok: true, code: 1, method: "PUT", message: "修改成功" }); case "DELETE": return json({ ok: true, code: 1, method: "PUT", message: "刪除成功" }); default: break; } }; // 非 get export const action = ({ request }) => { return handleNotGetRequest({ request }); }; // get export const loader = ({ request }) => { return json({ a: 1, }); };
為了代碼更加好維護,有結構的代碼時必要的,代碼分層占據重要位置。
如果使用 mongoose
等會定義模型層,定義操作數據的模型,然后使用控制層來操作模型層。構成一個簡單類 MVC 分層結構。當然 Remix 是一個基于 React + Node.js 全棧框架,使用模型層+服務層:
使用 mongoose 定義模型層, category.model.ts
import mongoose from 'mongoose' const CategorySchema = new mongoose.Schema({ name: String, description: String, createdAt: Date, articleIds: [String] }) export default mongoose.models.Category || mongoose.model('Category', CategorySchema)
使用 category.service.ts
定義服務層,提供給 Remix loader 和 action 操作數據使用
// model import Category from '~/models/category.model' export const delCategoryById = async (_id: string) => { return await Category.remove({ _id }) } export const findCategoryByName = async (name: string) => { return await Category.findOne({ name }) } export const updateCategoryById = async (_id: string, update: any) => { return await Category.findByIdAndUpdate({ _id }, update) } export const findCategoryById = async (_id: string) => { return await Category.findOne({ _id }) } export const addCategoryByName = async (name: string) => { const CategoryEntify = new Category({ name, createdAt: new Date() }) return await CategoryEntify.save() }
// core import { json } from '@remix-run/node' // service import * as categoryService from '~/services/category.service' // remix loader export async function loader() { const list = await categoryService .getCategoryList({}, '_id createdAt name articleIds', 0, 100000) .then((list) => list) return json({ code: 0, message: 'success', data: { list } }, 200) }
在 loader 函數中通過 services 層來獲取數據,然后使用 json 函數返回數據。
api.upload.files.tsx
上傳文件到本地
import type { ActionArgs } from '@remix-run/node' import { json, unstable_composeUploadHandlers as composeUploadHandlers, unstable_createFileUploadHandler as createFileUploadHandler, unstable_createMemoryUploadHandler as createMemoryUploadHandler, unstable_parseMultipartFormData as parseMultipartFormData } from '@remix-run/node' // single file upload export const action = async ({ request }: ActionArgs) => { const uploadHandler = composeUploadHandlers( createFileUploadHandler({ directory: 'public/uploads', // 指定上傳目錄 maxPartSize: 30000000, // 指定大小 file: (file) => { return file.filename } }), createMemoryUploadHandler() ) const formData = await parseMultipartFormData(request, uploadHandler) return json({ imgSrc: formData.get('file') }) // 返回文件名 }
上傳使用 post 方法,在 action 函數使用表單方式進行處理。
關于“怎么使用Remix寫API接口”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。