Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

next-api-validation

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

next-api-validation

Request validator implemented in Next.js:)

  • 1.0.5
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Next API Validation

This is basically the same as serverless-request-validator ready be used in Next.js

How to use it:

It is nice to be able to programmatically define what you want your API endpoint(s) to do deppending on the request method used.

In express it's something like:

app.get((req,res)=>{
    res.send("Something");
})

That will work only when using a GET request

In Next.js (and Vercel) apps, your API are files in a specific order in the project directory, each file with a default export being the actual handler that will handle that request.

First, install the module:

npm install next-api-validation

Or

yarn add next-api-validation

Using it in any of your API routes in Next.js:

import validation from "next-api-validation";

export default validation.get((req,res)=>{
    res.send("This only accepts GET request")
})

As you can see, using the get method in the validation object prevents the handler from being executed if a different request method is used.

And so with other methods:

// api/index.js or api/index.ts
import validation from "next-api-validation";

export default validation.post((req,res)=>{
    res.send("You just sent a POST request")
})

This handler a POST request

What if an endpoint should handle requests using more than one or two methods?

Creating a default export of the function should solve that:

// api/index.js or api/index.ts
import validate from "next-api-validation"

export default validate({
    get(req,res){
        res.send("A get request")
    },
    post(req,res){
        res.send("I only handle post requests"))
    },
    put(req,res){
        res.send("Did you put something?")
    }
})

The previous code handles requests that use three different methods, and calls only the necessary handler. An example of how it can be used:

// CRUD of a MongoDB Document model

import { Post } from "src/Models";
import { connectToDatabase } from "src/utils";
import validate from "next-api-validation";

connectToDatabase();

export default validate({
  get: async (req, res) => {
    const posts = await Post.find();
    res.send(posts);
  },
  post: async (req, res) => {
    const newPost = new Post(req.body);
    const saved = await newPost.save();
    res.send(saved);
  },
  put: async (req, res) => {
    const editedPost = await Post.findByIdAndUpdate(req.body._id, req.body);
    res.send(editedPost);
  },
  delete: async (req, res) => {
    const deletedPost = await Post.findByIdAndDelete(req.body._id);
    res.send(deletedPost);
  },
});

Keywords

FAQs

Package last updated on 13 Dec 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc