返回顶部
首页 > 资讯 > 前端开发 > JavaScript >一文学会使用Remix写API接口
  • 295
分享到

一文学会使用Remix写API接口

Remix API接口Remix API 2023-05-15 08:05:56 295人浏览 八月长安
摘要

目录本文提要接口种类RESTful api 特点Remix 中如何处理 api 特点Loader 函数处理 Get 请求action 处理非 GET 方法添加控制层和服务层暴露 lo

本文提要

Remix 是一个全栈框架,能写 api 接口的能肯定是具备的,而且 Remix 虽然定义为全栈框架,此文章主要探索如何接口。

  • Remix 中 api 的书写方式
  • Remix 中 RESTful api 的属性方式
  • mvc 分层接口如何写 Remix
  • 处理上传示例

接口种类

  • 普通 get/post api:即可满足基本
  • RESTful API:有规范, 需要协同的
  • graphql:可控制需要的字段的,良好的跨端

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

RESTful API 特点

  • 创建:POST /api/resources
  • 读取:GET /api/resources/:id
  • 更新:PUT /api/resources/:id
  • 删除:DELETE /api/resources/:id

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

Remix 中如何处理 api 特点

  • loader 处理 get 请求
  • action 处理非 get 请求

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

暴露 loader 接口

// 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 函数返回数据。

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

  • 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 函数使用表单方式进行处理。

小结

本文主要关注点是与 Node.js 其他的框架有什么不同。loader 处理 get 方法,action 处理非 get 请求。从普通的请求处理到处理分层的过程,写好一个 api 的学习变化过程。

更多关于Remix API接口的资料请关注编程网其它相关文章!

--结束END--

本文标题: 一文学会使用Remix写API接口

本文链接: https://lsjlt.com/news/208549.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 一文学会使用Remix写API接口
    目录本文提要接口种类RESTful API 特点Remix 中如何处理 api 特点Loader 函数处理 Get 请求action 处理非 GET 方法添加控制层和服务层暴露 lo...
    99+
    2023-05-15
    Remix API接口 Remix API
  • 怎么使用Remix写API接口
    这篇文章主要介绍“怎么使用Remix写API接口”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用Remix写API接口”文章能帮助大家解决问题。接口种类普通 get/post api:即可满足...
    99+
    2023-07-06
  • 一文带你学会使用PHP接口
    目录1. 概念2. 定义3. 实现4. 使用5. 使用场景5.1 多态性5.2 类型约束5.3 模块化编程6. 总结PHP 中的 Interface 是一种非常重要的特性,它允许开发...
    99+
    2023-05-18
    PHP 接口 PHP Interface
  • 学习使用Guzzle来编写PHP API接口
    随着互联网的发展,Web应用程序的数量和复杂度也在不断增加。这种复杂度带来了对于接口的需要,使得各种编程语言都需要支持各种API接口调用。在PHP编程语言中,使用Guzzle就可以轻松地调用API接口。 Guzzle是一个HTT...
    99+
    2024-01-22
    API PHP Guzzle
  • 用Python写一个简单的api接口
    python框架有很多,例如:Flask,Django,FastAPI 等。本文将使用 Flask 来编写 API 接口。 安装Flask 首先,您需要安装 Flask: pip install fl...
    99+
    2023-10-08
    python 后端 flask
  • 一文学会VSCode使用python
    目录一、前言二、VSCode配置python1.安装VSCode2.为VSCode设置中文3.为python开发安装插件4.安装代码一键运行插件Code Runner5.Run in...
    99+
    2024-04-02
  • 怎么利用python写api接口
    这篇文章主要讲解了“怎么利用python写api接口”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么利用python写api接口”吧!一、操作步骤导入:import flask,json实...
    99+
    2023-06-30
  • 用ThinkPHP6写API接口(实现前后端分离一)
    一、TP6设置 首先搭建PHP使用环境,比如phpstudy等,安装composer,通过composer安装tp6。 composer create-project topthink/think tp6 运行TP6 php think...
    99+
    2023-08-31
    php 开发语言
  • 怎么使用API接口
    这篇文章主要介绍“怎么使用API接口”,在日常操作中,相信很多人在怎么使用API接口问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用API接口”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!接口交互前...
    99+
    2023-06-16
  • Python写一个简单的api接口的实现
    python框架有很多,例如:Flask,Django,FastAPI 等。本文将使用 Flask 来编写 API 接口。 安装Flask 首先,您需要安装 Flask: pip i...
    99+
    2023-02-14
    Python api接口 Python api
  • 一文学会Java运算符的使用
    目录算术运算符关系运算符逻辑运算符赋值运算符条件运算符运算符优先级算术运算符 运算符描述+两数相加-两数相减*两数相乘/两数相除%取模,返回两数相除的余数++自加一- -自减一 pu...
    99+
    2024-04-02
  • 一文带你学会Spring JDBC的使用
    目录1、JDBC2、使用2.1、配置数据源2.2、HikariCP2.3、JdbcTempLate1、JDBC JDBC 就是 数据库开发 操作的 代名词,因为只要是现代商业项目的开...
    99+
    2024-04-02
  • 使用python编写一个登录接口
    需求:编写登录接口输入用户名密码认证成功后 显示欢迎信息输入三次后锁定用户信息文件黑名单的文件     黑名单里检查,不让登录     用户名密码判定流程图:代码:#!/usr/bin/env python tries = 0 lockfi...
    99+
    2023-01-31
    接口 python
  • 利用python写api接口实战指南
    目录一、操作步骤二、源码举例总结一、操作步骤 导入:import flask,json实例化:api = flask.Flask(name)定义接口访问路径及访问方式:@api.ro...
    99+
    2024-04-02
  • Django中怎么使用AJAX调用自己写的API接口
    在Django中使用AJAX调用自己写的API接口可以通过以下步骤实现: 创建API接口:首先需要在Django中定义自己的AP...
    99+
    2024-03-08
    Django AJAX
  • 学习如何使用PHP创建GraphQL API:构建API接口的步骤
    GraphQL是一个用于API的查询语言,它可以让客户端精确地查询数据,避免浪费网络带宽和服务器资源。在本文中,我们将讨论如何使用PHP创建GraphQL API。 GraphQL API的工作原理 GraphQL API是基于...
    99+
    2024-01-22
    API PHP graphql
  • 一文学会使用OpenCV构建文档扫描仪
    目录介绍执行形态学操作从捕获的图像中删除背景边缘和轮廓检测识别角点标准化四点定位寻找目的地坐标:透视变换测试观察结论总结:介绍 在本文中,我们将使用 OpenCV 库来开发 Pyth...
    99+
    2024-04-02
  • python调用api接口的代码怎么写
    你可以使用`requests`库来调用API接口,下面是一个简单的示例代码:```pythonimport requestsurl ...
    99+
    2023-08-30
    python
  • 如何使用Go语言编写NumPy和Git接口的API?
    随着数据科学和机器学习的发展,NumPy和Git成为了数据科学家和开发人员日常工作中不可或缺的工具。在本文中,我们将介绍如何使用Go语言编写NumPy和Git接口的API,并提供一些演示代码。 一、NumPy接口 NumPy是一个用于Py...
    99+
    2023-07-01
    numy git 接口
  • 怎么使用C#的API接口
    这篇文章主要介绍“怎么使用C#的API接口  ”,在日常操作中,相信很多人在怎么使用C#的API接口  问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用C#的API接口  ...
    99+
    2023-06-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作