文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么使用Remix写API接口

2023-07-06 00:09

关注

这篇文章主要介绍“怎么使用Remix写API接口”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用Remix写API接口”文章能帮助大家解决问题。

接口种类

其中如果是一些小项目,没有必要规则化的项目,使用 get/post 处理就已经足够了,如果项目有了很多的人要维护,并且有了一定的规模,为了方便管理,可以使用 RESTful API 的方式处理。graphql API 手动能力最强。

RESTful API 特点

其中,:id 表示资源的唯一标识符。

Remix 中如何处理 api 特点

Loader 函数处理 Get 请求

export const loader = () => {  return json({ get: 'loader get' })}

action 处理非 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;  }};// 非 getexport const action = ({ request }) => {  return handleNotGetRequest({ request });};//  getexport 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 操作数据使用

// modelimport 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()}

暴露 loader 接口

// coreimport { json } from '@remix-run/node'// serviceimport * as categoryService from '~/services/category.service'// remix loaderexport 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 函数返回数据。

使用 action 方法处理文件上传接口

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 uploadexport 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接口”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯