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

node-beauty

v1.2.1

Published

Beauty service framework

Downloads

25

Readme

node-beauty

npm package

我是来自中国的码农 Bun,该模块已被用于多个在线项目中,旨为构建基于 REST Service 的网站或应用提供可复用的服务端模块。

-- 2016.6.1

易于使用

node-beauty (以下简称 Beauty) 是基于 restify 模块的 HTTP 服务器,进行了封装,但你依然可以获得并控制 restify 的路由行为。

Beauty 已提供了常用基础设施的服务模块,如 MySQL,Redis,MongoDB,Solr 等,并能灵活装拆。

// app.js
var server = require('node-beauty');
server.init({
  config: 'config.js',
  path: 'sys'
});
server.use('mysql', require('node-beauty-mysql'));
server.use('redis', require('node-beauty-redis'));
// server.use('some-service');
server.use('test', {
  get_default: (req, res, next) => next('Hello world')
});
server.start((core, restify) => {
  // do something 
  restify.pre((req, res, next) => {
    // handler on request
  });
});

目录

$ npm install node-beauty

Beauty 需要准备一个配置文件,并返回一个配置对象,例子:

// config.js
module.exports = {
  app: {
    daemonize: false
  },
  server: {
    host: '127.0.0.1',
    token: 'this is a secure token'
  },
  service: {
    mysql: {
      master: {
        host: '127.0.0.1',
        port: 3306,
        user: 'root',
        password: '',
        database: 'test',
        charset: 'utf8'
      }
    }
  }
};

配置文件分为三部分,app 设置应用程序的运行选项;server 设置 restify 服务器的侦听端口及访问限制选项;service 设置各个服务模块的选项。

config.app

  • daemonize - 是否开启后台运行模式,默认 false
  • worker_processes - 子进程数量,默认为 cpu 内核数
  • pid - PID 文件目录,默认为程序当前目录
  • log4js - 是否使用 log4js 日志模块,如果使用,此选项传入 log4js 模块的 JSON 配置文件路径,默认为程序当前目录下的 /log4js.json;传入 false 则使用控制台 console.log 作为日志输出

config.server

  • name - 服务器名称,默认 "Beauty Restful API Server"
  • version - 服务版本,默认 "1.0.0"
  • token - 服务请求时 request.headers.token 需带上相符的 token 字符串,该选项必须设置,必须为字符串且不能为空串 ""
  • ip_list - 白名单 IP 数组,客户请求的来源 IP 必须在列表内,若该数组为空时不作来源 IP 检查,默认为空数组 []

config.service

服务模块的选项依赖你安装了哪些服务模块,该选项列表的键为服务模块的名称,值为该服务模块的配置对象,格式为:

[服务模块名称]: {
  选项1: xxx,
  选项2: xxx,
  ...
},
mysql: {
  ...
},
redis: {
  ...
},
"your-own-service": {
  ...
}

启动 Beauty 需三个步骤

初始化

// app.js
var server = require('node-beauty');
server.init({
  config: 'config.js',
  path: 'sys'
});

server.init 方法接受 options 作为参数

  • config - 配置文件路径,默认为程序当前目录下的 /config.js
  • path - 自定义服务模块的加载路径,默认为程序当前目录下的 /sys 目录

安装服务模块

server.use 方法详见 安装服务模块

开启 restify 服务器

// app.js
server.start((core, server) => {
  // core - the CORE class, see http://www.hdwong.com/node-beauty
  // server - restify server instance, see http://restify.com/
  // do something
});

server.start 方法接受一个回调函数,返回启动后的 restify 服务器实例,以实现对 restify 的控制

Beauty 通过 server.use 来安装服务模块,原型:

server.use( [服务模块名称], [服务对象] );

Beauty 提供三种服务模块的安装方式

node-beauty-* 模块

Beauty 提供了一些常用的基础服务模块,做好配置后加载即能使用

// app.js
server.use('db', require('node-beauty-mysql'));

文件加载

当服务对象参数为空时,Beauty 会自动查找 options.path 服务模块目录下是否存在与模块名称同名的 js 文件并加载

// app.js
server.use('your-own-service');

上述例子中,Beauty 会查找 /sys/your-own-service.js 并加载,若失败则提示异常

自定义服务模块的开发详见 自定义服务模块

内联对象

// app.js
server.use('test', {
  get_default: (req, res, next) => next('Hello world')
});

客户端可通过 config.server 中设置的主机和端口号访问 API,并设置好相符的 request.headers.token 即可,

服务接口路径为 http://[hostname]:[port]/[服务模块名称]/[服务方法]

$ curl --header token:abcd1234 --get http://127.0.0.1:1108/test

{"code":1,"result":"Hello world"}

推荐使用 Postman 进行服务接口调试

Postman

返回值

response.statusCode 反映当前接口的响应状态,该状态符合 HTTP 约定,则 200 为成功,否则为失败

返回值为 JSON 格式的对象,且总会包含 code,也可代表不同响应状态

  • 1 - 成功
  • 0 - 服务模块异常
  • -1 - 服务器异常

成功时,result 会返回结果

失败时,message 会返回错误信息

详细 API 文档请查阅 http://www.hdwong.com/node-beauty

PHP 客户端 SDK 请查阅 https://www.npmjs.com/package/php-azalea

Node.js 客户端 SDK 请查阅 https://www.npmjs.com/package/node-azalea

作者信息