Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
next-api-validation
Advanced tools
This is basically the same as serverless-request-validator ready be used in Next.js
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 thevalidation
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);
},
});
FAQs
Request validator implemented in Next.js:)
We found that next-api-validation demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.