npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

mares-api-router

v1.0.9

Published

mares presentation layer에서 사용하는 router class 입니다. 반드시 ��우팅 전에 해당 클래��를 상속받아서 사용합니다.

Downloads

21

Readme

mares-api-router

mares presentation layer에서 사용하는 router class 입니다. 반드시 라우팅 전에 해당 클래스를 상속받아서 사용합니다.

Installation

npm install --save mares-api-router

Example

GetRouter, PostRouter, DelRouter, PutRouter 가 있으며 사용법은 동일합니다. 먼저 sg-openapi-validator 모듈의 validator 미들웨어를 use 시켜줍니다.

const validator = require('sg-openapi-validator')
app.use(validator())

이후에 다음과 같이 클래스를 정의합니다.

// get.js
const GetRouter = require('mares-api-router').GetRouter;
module.exports = class extends GetRouter {

    constructor(url) {
        super(url);
    }

    fetcher() {
        return async (req, res, next) => {
            try {
                next();
            } catch (e) {
                next(e);
            }
        };
    }

    responder() {
        return async (req, res) => {
            res.success({
                row: req.receiver.getObject()
            })
        }
    }
}

마지막으로 express의 router를 이용하여 미들웨어 호출 스택을 정의합니다.

const router = require('express').Router()
const GET = require('./get.js')
const gets = new GET('url')

router.post(
	post.getUrl(), // mares-api-router에서 생성자에서 넘긴 url을 가져옵니다.
	post.validator(), // mares-api-router의 기본 미들웨어입니다. 
	post.fetcher(),
	post.responder()
)

해당 미들웨어는 api 요청시 들어온 parameter, body 데이터의 유효성을 검사합니다. 반드시 sg-openapi-validator 모듈의 validator 미들웨어를 먼저 use 시켜줘야 합니다. 해당 모듈의 대한 자세한 설명은 문서를 참고하시기 바랍니다.

최종적으로 mares-api-router의 validator 미들웨어에서는

  1. 스트링 형태로만 들어온 데이터 타입을 스펙 정의에 맞게 알맞게 변환해주고
  2. query 필드의 유효성 검증
  3. body 필드의 유효성 검증

3가지를 수행합니다.

즉 validator 에서는 내부적으로 sg-openapi-validator의 바인딩된 미들웨어를 사용합니다.