
Security News
OWASP 2025 Top 10 Adds Software Supply Chain Failures, Ranked Top Community Concern
OWASP’s 2025 Top 10 introduces Software Supply Chain Failures as a new category, reflecting rising concern over dependency and build system risks.
Node.js Web Framework
polix是基于koa v2.5.0的装饰器、插件式开发框架,和平常的Node.js Web Framework相比,它无需另外绑定路由集合、可拓展、开发简单,依照java的著名依赖注入框架spring来制作,让开发者专注于逻辑。polix采用多服务多进程架构来保证服务的稳定和快速响应能力。polix的中间件和koa v2.x的中间件保持兼容。polix提供Dockerfile+docker-compose.yml方案进行部署,默认使用的ORM是sequelize(后续会提供polix-orm)。开发者可以选择ES6/7/8 或者 TypeScript来进行开发。
以上部分功能尚在开发阶段,敬请关注!
$ npm i polix --save
使用
polix-cli初始化应用
$ npm i polix-cli -g
$ pol init example
$ cd example
$ make build
$ make run-dev
在
service文件夹下添加user.js
const { Service } = require('polix');
class UserService extends Service {
constructor(){
super();
this._name = {};
}
async addUser(userId,name){
this._name[userId] = name;
return this;
}
async getUser(userId){
return this._name[userId];
}
}
module.exports = UserService;
在
controller文件夹下添加user.js
const { Controller, GET, POST, DEL, PUT } = require('polix');
class UserController extends Controller {
// POST /user/addUser
@POST
async addUser(param, ctx){
const {body} = param;
await this.service.user.addUser(body.userId, body.name);
ctx.body = {
result: 'ok'
};
}
// GET /user/getUser
@GET
async getUser(param, ctx){
const {query} = param;
let user = await this.service.user.getUser(query.userId);
ctx.body = {
user
};
}
// GET /user/info
@GET('info')
async getInfo(param, ctx){
ctx.body = {
v: 'v1.0'
}
}
// PUT /user/updateUser
@PUT
async updateUser(param, ctx){
ctx.body = {
status: true
}
}
// DEL /user/delUser
@DEL
async delUser(param, ctx){
ctx.body = {
status: true
};
}
// GET /user/status/:userId
@GET('status/:userId')
async getStatus(param, ctx){
const {router} = param;
ctx.body = {
status: true,
userId: router.userId
};
}
}
module.exports = UserController;
polix的中间件与koa 2.x 的中间件保持兼容
框架默认加载koa-body中间件,如需另外添加中间件则新建middware文件夹(与controller文件夹平级)
添加跨域中间件 ,新建cors.js:
# cors.js
const cors = require('koa2-cors');
module.exports = function(){
return cors({
origin: function(ctx) {
return '*';
},
exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'],
maxAge: 5,
credentials: true,
allowMethods: ['GET', 'POST', 'DELETE'],
allowHeaders: ['Content-Type', 'Authorization', 'Accept']
});
}
该文件夹下必须存在index.js文件作为总输出中间件文件,加载时根据导出对象的顺序进行绑定中间件
# index.js
const cors = require('./cors');
module.exports = {
cors // 必须是函数 ,绑定方式为:app.use(cors())
}
$ npm i --save polix-request
在项目根目录下的
config文件夹下的plugin.default.js中添加以下代码
// `curl`最终会挂载到`this.app`下
exports.curl = {
// 表示是否启用该插件
enable: true,
// 插件`npm`包名
package: 'polix-request'
};
在
controller里用polix-request
@GET
async getWebInfo(param, ctx){
let result = await this.app.curl.get('https://www.baidu.com');
ctx.body = {
data: result
}
}
polix已经内置polix-request插件了,这里只是个演示
$ make dev
Polix © Ricky 泽阳, Released under the MIT License.
FAQs
Node.js Web Framework
We found that polix 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
OWASP’s 2025 Top 10 introduces Software Supply Chain Failures as a new category, reflecting rising concern over dependency and build system risks.

Research
/Security News
Socket researchers discovered nine malicious NuGet packages that use time-delayed payloads to crash applications and corrupt industrial control systems.

Security News
Socket CTO Ahmad Nassri discusses why supply chain attacks now target developer machines and what AI means for the future of enterprise security.